Flutter: как изменить цвет панели навигации системы?

#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(),
);