【问题标题】:Flutter - Hot reload - Change the value from outside of the State.build functionFlutter - 热重载 - 从 State.build 函数外部更改值
【发布时间】:2022-11-10 05:43:33
【问题描述】:

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

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

是否有任何解决方案,以便我可以更改值并查看结果,而无需每次都进行繁琐的热重启,也无需中途反转我的代码以使热重载工作?先感谢您。

【问题讨论】:

    标签: flutter dart statefulwidget flutter-hotreload


    【解决方案1】:

    这是预期的行为。

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

    有关更多信息,请参见此处details

    【讨论】:

      【解决方案2】:

      我知道这有点晚了,但尝试作为函数返回。我希望这会对其他人有所帮助。

      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'
          };
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-04-28
        • 1970-01-01
        • 2020-02-23
        • 1970-01-01
        • 2016-08-19
        • 1970-01-01
        相关资源
        最近更新 更多