为了便于管理,我构建了这个应用程序,其中的值包括文本、尺寸、颜色、路径等,所有这些都被放入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'
};
}