在 Widget 或 State 上保留 final 字段?
Keeping final fields on the Widget or the State?
最终值应该放在哪里?
在 StatefulWidget
(当然是我的子类)实例中并通过 widget.thatFinalField
或
从 State
(子类)访问它
在 State
本身。我已经看过这两种方法了。它们各有优缺点吗?
您应该在 StatefulWidget
上存储 final
成员字段(通过构造函数参数传递)并使它们成为 public.
StatefulWidget
的关联 State
应该只使用默认构造函数(无参数),其成员字段应该是私有的(以 _
开头)和可变的。如果需要昂贵或异步工作,则内联或在 initState
中初始化它们。
此模式允许 StatefulWidget
在其父级调用 setState
时使用新的构造函数参数 recreated/rebuilt,同时重新使用先前的 State
并让它保留存储在其可变成员字段中的值。
最终值应该放在哪里?
在 StatefulWidget
(当然是我的子类)实例中并通过 widget.thatFinalField
或
State
(子类)访问它
在 State
本身。我已经看过这两种方法了。它们各有优缺点吗?
您应该在 StatefulWidget
上存储 final
成员字段(通过构造函数参数传递)并使它们成为 public.
StatefulWidget
的关联 State
应该只使用默认构造函数(无参数),其成员字段应该是私有的(以 _
开头)和可变的。如果需要昂贵或异步工作,则内联或在 initState
中初始化它们。
此模式允许 StatefulWidget
在其父级调用 setState
时使用新的构造函数参数 recreated/rebuilt,同时重新使用先前的 State
并让它保留存储在其可变成员字段中的值。