Flutter-热重载-从State.build函数外部更改值



为了便于管理,我构建了这个应用程序,其中的值包括文本、尺寸、颜色、路径等,所有这些都被放入StatefulWidget类文件之外的不同文件中。我以前从未寻找过这个问题的解决方案,所以我做得更难,在完成小部件的接口后将变量移出。下面是一个例子。

class TextState extends State<TextWidget>{
@override
Widget build(BuildContext context) => Text(Values.text); //Changed from Text('EXAMPLE')
}
--- In different file ---
class Values{
static String text = 'EXAMPLE';
}

但今天我需要从头到脚重新设计这个应用程序。当然,不幸的是,当我更改变量的值时,热重载会忽略它,因为它被认为是一个状态值,但在我的情况下,它实际上不是运行时状态更新。

有没有什么解决方案可以让我更改值并查看结果,而不必每次都乏味地热重启,也不必为了热重新加载而中途反转代码?。提前谢谢。

这是预期行为。

在Dart中,静态字段被延迟初始化。这意味着第一次运行Flutter应用程序并读取静态字段时,它已设置为其初始值设定项求值为的任何值。全局变量和静态字段被视为状态,因此不在热重新加载期间重新初始化。

有关更多详细信息,请参阅此处。

我知道这有点晚了,但试着通过getter函数访问它。我希望这能帮助其他人。

class TextState extends State<TextWidget>{
@override
Widget build(BuildContext context) => Text(Values.text); //Changed from Text('EXAMPLE')
}
--- In different file ---

class Values{
// Returning as a function.
static String get text { 
return 'EXAMPLE'
};
}

相关内容

  • 没有找到相关文章

最新更新