Flutter Tips
2019-01-11 本文已影响0人
能量马甲
- 如何全局修改App字体大小?
修改MediaQuery里面的textScaleFactor属性,以新的MediaQuery微件作为builder函数返回值,字体大小缩放因子全局生效
关键字: MaterialApp(builder) , MediaQuery, textScaleFactor
MaterialApp(
builder: (BuildContext context, Widget child) {
return MediaQuery.of(context).copyWith({
textScaleFactor: _options.textScaleFactor.scale,
child: child,
});
}
);
- 如何隐藏顶部状态栏?
关键字:SystemChrome, services.dart
import 'package:flutter/services.dart';
Future main() async {
await SystemChrome.setEnabledSystemUIOverlays([]);
}
- 类方法前下划线void _method()只在当前类中可见,同private,类名前面下划线(_ClassName),只在当前源文件可见
- State<T extends StatefulWidget>类中的initState热重载(debug)不会被执行,修改initState初始化代码后,需重新debug才生效
- 避免使用对象赋值语句,传递的是引用,而不是数据实体,应该使用复制
@override
void initState() {
super.initState();
articles = List<Article>.from(kArticles);
//articles = kArticles; 错误,无效
}
5.dart中如何写单例模式
class Singleton {
Singleton._();
// 在类级别而非对象级别创建该对象,始终是一个
static final shared = Singleton._();
// 工厂构造函数不一定创建对象,这是一个特殊的构造函数
factory Singleton() => shared;
}
test('test singleton', (){
final a = Singleton();
final b = Singleton();
expect(a == b, true);
expect(identical(a, b), true);
});