这是一种非常奇怪的行为。我有四个不同的主题。在我的控制器里class Controller extends GetxController { ..
我使用控制器final Controller c = Get.put(Controller());
在事件上设置当前主题,如下所示:
void setAppMode(AppMode mode) async {
appMode.value = mode;
switch (appMode.value) {
case AppMode.first:
Get.changeTheme(firstTheme);
break;
case AppMode.second:
Get.changeTheme(secondTheme);
break;
case AppMode.third:
Get.changeTheme(thirdTheme);
break;
default:
Get.changeTheme(firstTheme);
break;
}
}
这实际上适用于iOS模拟器,但不适用于Chrome和MacOS。
在实现GetX之前,我确实实现了一个提供程序方法,它很简单。我切换到getx,我几乎可以肯定它在所有平台上都工作了一段时间,然后停止了。
我实际上找不到getx成功更改主题的切换后的提交(即使,再一次,我很确定它是工作的)。
另一个奇怪的迹象是,我的徽标图像(沿着主题而改变)即使没有被Obx Package ,也会在iOS模拟器中更新,而在macos和chrome中,它需要 Package (所以实际上说这段代码
Center(
child: Image.asset(
c.getLogoPath(),
),
),
足以让ios模拟器在事件上更新徽标图像,而在chrome或macos中我需要这个
Center(
child: Obx(() => Image.asset(
c.getLogoPath(),
)),
),
即使在这种情况下,我也很确定它在从提供程序切换到GetX后立即工作,而不需要Obx Package 。我也确信我已经退出并重新构建了运行时)。
运行时中是否存在任何“缓存”问题?怎么了?我的Flutter知识不让我明白问题可能隐藏在哪里。
顺便说一句,我很清楚,有些事情并不像它应该的那样表现。
有什么提示吗?
更新这似乎与一个bug有关:https://github.com/jonataslaw/getx/issues/1878
1条答案
按热度按时间5ssjco0h1#
这不是一个解决方案,而是一个变通办法:将GetMaterialApp Package 到Multiprovider中,我可以混合在平台上切换的方法,如下所示:
而app builder应该是这样的: