我最近更改了我的 flutter 应用程序的调色板。然而,当我运行它时,我最初看到的是旧调色板。
查看新更改的唯一方法是点击重新启动,即使它是新实例。 这是iOS。我已尝试删除所有内容和设置(这应该不是必需的)但无济于事。
flutter doctor 很干净 - 没有问题。
控制台中没有显示错误。
如有任何指导,我们将不胜感激。
由于您没有提供任何代码,我可能会假设您正在使用
const
值声明主题。
请参阅下面的内容:
更新
cCl
我只需要热重载。但对于 fCl
热重载不起作用。我需要热重启来更新 UI
在 Dart 中,当你将变量声明为
const
时,意味着该变量本身是一个编译时常量。对此变量值的任何更改都需要完全重新启动应用程序才能生效,因为该值是在编译时确定的。
Color fCl = const Color.fromARGB(255, 228,179, 152)
const Color cCl = Color.fromARGB(255,174, 98, 202)
看到差异了吗?
fCl
是一个用常量值初始化的变量。它本身不是常数,但它的初始值是。当您在代码中更改其值并热重载时,更改不会生效,因为初始值是在编译时确定的。
cCl
是常数。当您在代码中更改其值并热重载时,更改就会生效,因为 cCl
是一个编译时常量,并且它的值直接在引用的地方使用。
因此,行为差异是由于
fCl
是具有常量值的变量,而 cCl
是常量。对 fCl
初始值的更改需要完全重启才能生效,而对 cCl
的更改可以通过热重载看到。
要在热重载后查看
fCl
的新值,您需要在运行时将 fCl
重新分配给新值。但由于您将 const
值分配给 fCl
,因此无法在运行时将 fCl
重新分配给新值,因此您需要完全重新启动应用程序才能看到 fCl
的新值
.