【问题标题】:Keeping final fields on the Widget or the State?在小部件或状态上保留最终字段?
【发布时间】:2017-05-09 15:20:00
【问题描述】:

最终值应该保存在哪里?

StatefulWidget(当然是我的子类)实例中并通过widget.thatFinalFieldState(子类)访问它,或者

State 本身中。我已经看过这两种方法了。它们各自有什么优缺点吗?

【问题讨论】:

    标签: dart flutter


    【解决方案1】:

    您应该在StatefulWidget 上存储final 成员字段(通过构造函数参数传递)并将它们公开。

    StatefulWidget 关联的State 应该只使用默认构造函数(无参数),并且它的成员字段应该是私有的(以_ 开头)并且是可变的。如果需要昂贵的或异步工作,请内联或在 initState 中初始化它们。

    此模式允许StatefulWidget 在其父级调用setState 时使用新的构造函数参数重新创建/重建,同时重新使用以前的State 并让它保留存储在其可变成员字段中的值。

    【讨论】:

    • 最终流订阅怎么样?从服务或注入器类中获得。
    • 构造你的 StatefulWidget 和它的关联状态不应该有任何副作用。如果您正在做任何对初始化小部件有副作用的工作,您应该在 initState() 中进行并将其保存到可变成员变量中。确保在 dispose() 中自行清理。
    猜你喜欢
    • 2020-05-20
    • 2020-05-24
    • 2020-01-19
    • 2021-07-15
    • 1970-01-01
    • 2020-04-15
    • 1970-01-01
    • 2019-05-09
    • 1970-01-01
    相关资源
    最近更新 更多