本文介绍了如何监听平台亮丽的变化?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在设置一个系统,当用户将系统主题更改为暗模式时,它会更改主题,并且在颤动的情况下,它工作得很好!但是,当用户更改系统主题时,系统导航和状态栏不会更改其颜色。我在主页上的build方法中运行了代码,但似乎没有做到这一点。下面是主页构建方法中的代码:
class HomePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
Brightness sysBrightness = MediaQuery.of(context).platformBrightness;
if (sysBrightness == Brightness.dark)
Themes.setDarkSystemColors();
else
Themes.setLightSystemColors();
return Scaffold(
appBar: CustomAppBar(title: "Home"),
drawer: CustomDrawer(),
body: SizedBox(),
);
}
}
以下是theme:
和darkTheme:
主应用中的代码:
return MaterialApp(
initialRoute: '/',
routes: routes,
navigatorObservers: [_routeObserver],
theme: Themes.lightTheme,
darkTheme: Themes.darkTheme,
debugShowCheckedModeBanner: false,
title: 'School Life',
);
推荐答案
覆盖initState
方法,使用onPlatformBrightnessChanged
:
@override
void initState() {
super.initState();
var window = WidgetsBinding.instance!.window;
// This callback is called every time the brightness changes.
window.onPlatformBrightnessChanged = () {
var brightness = window.platformBrightness;
};
}
要处理默认行为,请在上面的回调中添加以下行。感谢@DJafari
WidgetsBinding.instance?.handlePlatformBrightnessChanged();
这篇关于如何监听平台亮丽的变化?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!