Flutter 运行后需要重新启动才能看到更新

问题描述 投票:0回答:1

我最近更改了我的 flutter 应用程序的调色板。然而,当我运行它时,我最初看到的是旧调色板。

查看新更改的唯一方法是点击重新启动,即使它是新实例。 这是iOS。我已尝试删除所有内容和设置(这应该不是必需的)但无济于事。

flutter doctor 很干净 - 没有问题。

控制台中没有显示错误。

如有任何指导,我们将不胜感激。

flutter dart
1个回答
0
投票

由于您没有提供任何代码,我可能会假设您正在使用

const
值声明主题。

请参阅下面的内容:

  • ⚡:热重载
  • ↻:热重启

更新

cCl
我只需要热重载。但对于
fCl
热重载不起作用。我需要热重启来更新 UI

enter image description here


在 Dart 中,当你将变量声明为

const
时,意味着该变量本身是一个编译时常量。对此变量值的任何更改都需要完全重新启动应用程序才能生效,因为该值是在编译时确定的。

Color fCl = const Color.fromARGB(255, 228,179, 152)
const Color cCl = Color.fromARGB(255,174, 98, 202)

看到差异了吗?

  1. fCl
    是一个用常量值初始化的变量。它本身不是常数,但它的初始是。当您在代码中更改其值并热重载时,更改不会生效,因为初始值是在编译时确定的。

  2. cCl
    是常数。当您在代码中更改其值并热重载时,更改就会生效,因为
    cCl
    是一个编译时常量,并且它的值直接在引用的地方使用。

因此,行为差异是由于

fCl
是具有常量值的变量,而
cCl
是常量。对
fCl
初始值的更改需要完全重启才能生效,而对
cCl
的更改可以通过热重载看到。

要在热重载后查看

fCl
的新值,您需要在运行时将
fCl
重新分配给新值。但由于您将
const
值分配给
fCl
,因此无法在运行时将
fCl
重新分配给新值,因此您需要完全重新启动应用程序才能看到
fCl 的新值
.

© www.soinside.com 2019 - 2024. All rights reserved.