如何根据Flutter中的主题更改导航和状态栏的颜色?

时间:2019-10-17 00:51:36

标签: flutter themes

在我的matches <- apply(genos[1:2,,], MARGIN = 3, function(x) any(x[1,] %in% x[2,])) sum(matches) [1] 5 which(matches) [1] 6 7 8 9 13 中,我使用属性MaterialApptheme,以便在用户切换其全局设备主题时可以利用它。但是,我遇到了一个问题,即用户切换主题时状态栏和导航栏不会更改。我使用的是路由系统,所以我的darkTheme属性中什么也没有,我只有home

我在初始路线页面上有这样的代码:

initialRoute

但是,仅当我重新启动应用程序并且更改主题时,它才起作用。我知道我可能必须重建class HomePage extends StatelessWidget { @override Widget build(BuildContext context) { return Builder(builder: (BuildContext context) { final MediaQueryData mediaQuery = MediaQuery.of(context); if (mediaQuery.platformBrightness == Brightness.dark) { Themes.setDarkSystemColors(); } else { Themes.setLightSystemColors(); } return Scaffold( appBar: CustomAppBar(title: "Home"), drawer: CustomDrawer(), body: SizedBox(), ); }); } } ,但是我不确定该怎么做。我当时在想一个MaterialApp,但我不知道。如果有人可以帮助我,那就太好了。

1 个答案:

答案 0 :(得分:0)

这就是我更改导航栏颜色以及暗/亮/系统主题更改的方式:

child: Consumer<Preferences>(
          builder: (context, preferences, child) {
            var app = MaterialApp(
              title: 'dikt',
              initialRoute: '/',
              routes: {
                '/': (context) {
                  SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle(
                    systemNavigationBarColor:
                        Theme.of(context).canvasColor, // navigation bar color
                    //statusBarColor: Colors.pink, // status bar color
                  ));
                  return Lookup();
                },
              },
              themeMode: preferences.themeMode,
              theme: lightTheme,
              darkTheme: darkTheme,
            );

https://github.com/maxim-saplin/dikt/blob/master/lib/main.dart

请注意,我正在使用允许用户更改主题的自定义首选项提供程序。