所以想象我有一个带抽屉,app栏,身体等的应用程序(标准材料脚手架) .
我现在正在考虑实现它的正确方法是什么,因为我基本上是 don't want any state in the widgets (即我希望将状态(数据)保存在专用的模型/存储/控制器类中,并保持小部件仅负责UI /像素) .
我可以使顶级的根应用程序小部件有状态,然后 setState((){})
(注意虚拟回调,我对商店/模型/感兴趣的是'd use just to trigger the rebuild) whenever the controller(s) tell me to. The child widgets would then get rebuilt and would read the values they'
我可以使顶级窗口小部件无状态,只将叶子标记为有状态 .
鉴于Flutter声称要针对频繁的重建进行优化,一种选择明显优于另一种吗?我更加冗长(2x课程) .
1 回答
实现它的正确方法imo是flutter团队如何设计要使用的状态类 . 执行此操作时,您将向UI类中注入一个状态对象:
即,仅将与窗口小部件和/或其直接子窗口小部件相关的状态数据存储在窗口小部件的状态中 .
仅在1(最顶层)小部件中跟踪状态是一个坏主意(复杂性) . 当状态对象很大时,在setState()上比较先前状态和当前状态时,看到框架有很多内容需要考虑 . 不使用独立变化的较小状态对象似乎是浪费 . 此外,从维护的角度来看,当状态对象仅与当前窗口小部件相关时,很容易获得您正在查看的内容的上下文 .
在我看来,你正在与框架作斗争,你能详细说明一个特定的原因/例子,为什么你不希望在小部件中有任何状态?