升级flutter走的坑还真是多,已经用了将近2周的时间来升级,太耗费精力了
这不,这个状态栏的问题也耗费了我2个小时的时间来解决
问题:我修改不了状态栏的颜色
代码为 原生
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
}
flutter代码
Future<void> main() async {
SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle(
systemNavigationBarColor: Color(0xFF000000),
systemNavigationBarDividerColor: null,
statusBarColor: Colors.transparent,
systemNavigationBarIconBrightness: Brightness.light,
statusBarIconBrightness: Brightness.dark,
statusBarBrightness: Brightness.dark,
));
runZoned<Future<Null>>(() async {
runApp(ColorvApp(
key: appKey,
home: ColorvRouter.createRootPage(AppConfig.instance.defaultRoute),
));
}, onError: (error, stackTrace) async {
// await _reportError(error, stackTrace);
});
}
有2处需要修改
- 把原生代码的
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
注释掉,因为有这句话,修改flutter的代码就不起作用了,不知道为啥以前(flutter sdk 1.9.1)可以,现在不行了,现在版本是flutter sdk 2.5.1
- 将flutter的SystemChrome.setSystemUIOverlayStyle代码放到runApp的下方。 写在组件渲染之后,是为了在渲染后进行set赋值,覆盖状态栏,写在渲染之前MaterialApp组件会覆盖掉这个值。