有关此主题的大多数答案都建议采用以下解决方案。
import 'package:flutter_statusbarcolor/flutter_statusbarcolor.dart';
void main() => runApp(new MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
FlutterStatusbarcolor.setStatusBarColor(Colors.white);
但是根据此answer
构建方法的设计方式应使其纯净/无副作用。
建议的解决方案有一个缺点-如果我必须根据当前屏幕更改状态颜色,则该解决方案将不起作用。
有没有办法处理它?
答案 0 :(得分:1)
您可以使用AnnotatedRegion
为每个路线指定不同的statusBarColor
:
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
routes: createRoutes(),
);
}
Map<String, WidgetBuilder> createRoutes() {
return {
'/': (BuildContext context) {
return AnnotatedRegion<SystemUiOverlayStyle>(
value: const SystemUiOverlayStyle(statusBarColor: Colors.blue),
child: Scaffold(body: Home()),
);
},
'/foo': (BuildContext context) {
return AnnotatedRegion<SystemUiOverlayStyle>(
value: const SystemUiOverlayStyle(statusBarColor: Colors.red),
child: Scaffold(body: Foo()),
);
},
};
}
}