#flutter
#флаттер
Вопрос:
class _MyAppState extends State<MyApp> {
DarkThemeProvider themeProvider = DarkThemeProvider();
@override
void initState() {
getCurrentAppTheme();
super.initState();
}
@override
Widget build(BuildContext context) {
return MultiProvider(
providers: [
ChangeNotifierProvider(create: (_) => themeProvider,)
],
child: Consumer<DarkThemeProvider>(
builder: (BuildContext context, value, Widget child){
return MaterialApp(
theme: Style.themeData(themeProvider.darkTheme, context),
home: Mainpage(),
);
},
)
);
}
}
Это мой код. Я хочу изменить свой systemNavigationBarColor
режим в темном или световом режиме. Как изменить цвет systemNavigationBarColor
?
Когда я использую SystemChrome
вот так,
SystemChrome.setSystemUIOverlayStyle(
SystemUiOverlayStyle(
statusBarColor: Colors.transparent,
statusBarIconBrightness: Brightness.dark,
systemNavigationBarColor: Provider.of<DarkThemeProvider>(context).darkTheme ? Colors.black : Colors.white,
systemNavigationBarIconBrightness: Provider.of<DarkThemeProvider>(context).darkTheme ?Brightness.light : Brightness.dark
)
);
этот код не работает.
Ответ №1:
Вы можете обернуть свой экран в аннотированный регион при переходе к нему (например, на карте маршрутов):
return AnnotatedRegion<SystemUiOverlayStyle>(
value: SystemUiOverlayStyle.light.copyWith(
systemNavigationBarColor: primaryColor,
),
child: MyApp(),
);