Flutter:使用Get切换isDarkMode时文本颜色无法实时更新问题
解决点击切换DarkMode时文本颜色不即时更新的问题
问题出在你定义的headingStyle是普通的getter方法——当Get.isDarkMode变化时,使用这个样式的Widget不会收到状态更新通知,自然不会重建,所以颜色只有在热重载时才会重新计算生效。
给你两种直接可行的解决办法:
方法一:用Obx包裹Text组件
Get.isDarkMode属于GetX的响应式状态,Obx会自动监听它的变化并触发组件重建,这样样式会实时更新:
Obx(() => Text( "你的标题内容", style: headingStyle, ));
方法二:用GetBuilder监听主题控制器
如果你是通过Get.changeTheme或Get.changeThemeMode切换主题,GetMaterialController会管理全局主题状态,用GetBuilder可以监听其变化:
GetBuilder<GetMaterialController>( builder: (_) => Text( "你的标题内容", style: headingStyle, ), )
另外确认下你的切换按钮代码是否正确,比如:
ElevatedButton( onPressed: () { Get.changeThemeMode( Get.isDarkMode ? ThemeMode.light : ThemeMode.dark, ); }, child: Text(Get.isDarkMode ? '切到浅色模式' : '切到深色模式'), )
内容的提问来源于stack exchange,提问作者SpookySkeleton
相关产品推荐
相关产品推荐

