BUG 触发条件
- 设备 IOS 15 模拟器
- GetX 实现换肤
- GetMaterialApp 里面配置好 theme和darkTheme
- 使用GetView和GetController进行开发
此时如果把App前后台切换,使用Obx包括起来的内容会跟谁异常主题变换,未使用Obx的颜色不会变化。
解决路径
首先在获取 lightTheme 和 darkTheme 进行断点,发现在切换到后台的时候会重新获取,猜测它应该是在进入后台的时候对主题进行了保存,但是存储机制可能是错误的。
既然存储异常了,就在进入后台之前再重新设置一遍主题好了;这里使用 WidgetsBinding
进行监听
@override
void didChangeAppLifecycleState(AppLifecycleState state) {
super.didChangeAppLifecycleState(state);
if(state == AppLifecycleState.paused) {
/// 重新设置主题
}
}
重新测试一下,问题解决。