foo*_*ist 1 state immutability dart flutter statelesswidget
该课程StatelessWidget标记为immutable。不过,我现在用的scoped model,这意味着,我尽量避免StatefulWidget和使用model来改变state在StatelessWidget。这导致我non-final fields进入StatelessWidget,这不是原因errors,因为它只是一个warning。但是我想知道是否有更好的方法?
无状态窗口小部件应仅具有final字段,没有例外。原因:当出于某种原因(屏幕旋转,动画,滚动...)重建父级小部件时,将build调用父级的方法,这将导致所有小部件都被重建。
扩展的类StatefulWidget必须遵循相同的规则,因为它们也被重构。只有State,它可以包含可变领域,是小部件的布局树的生命周期内保持。
没有理由要避免StatefulWidget。它是Flutter的基本构建块。
实际上,ScopedModelDescendant它也是一个有状态的小部件。scoped_model的主要好处是您可以将业务逻辑与小部件层分开。它并不能消除对有状态小部件的需求。
将有状态小部件用于:
ScopedModel窗口小部件的窗口小部件)。将Model实例存储在中State。TextEditingController,复选框的状态)AnimationControllers的动画小部件Controller(TabController,ScrollController,...)使“页面”窗口小部件(Scaffold使用进行构建的窗口小部件Navigator)具有状态通常是一个好主意。通常,这些是范围模型的宿主。
| 归档时间: |
|
| 查看次数: |
922 次 |
| 最近记录: |