好几天一直看Flutter的设计模型,因为flutter 是靠State 来刷新UI的,这样就出现怎么才能把UI跟逻辑隔离呢,iOS 有mvc mvvm mvp 等如果直接用iOS 的思想是走不通的,自己也查了一下Flitter 的状态管理有 StatefulWidget 和 setState() ,InheritedWidget,Scoped model ,BLoC ,Redux 等等,在这里介绍一下它们的区别 主讲bloc,这是官方推荐的管理模式
好的框架要求
能管理好全局状态和本地状态
UI 逻辑和业务逻辑应该是分离的
在框架的帮助下可以写出高质量的代码
框架应该提升 App 的性能
框架要容易理解,便于扩展
一区别
1. StatefulWidget 和 setState()
可以管理state ,相对于管理数据较少的界面还可以,涉及到数据量大且共用的数据等就显着不是那么友好了,
主要区别:UI 逻辑和业务逻辑没有分离 且只能管理本地状态
2. InheritedWidget
数据共享,可以把这个状态共享给多个界面使用,InheritedWidget 只能管理全局状态,而且没有涉及到 UI 逻辑和业务逻辑的分离,大量人员合作开发不建议使用
3. Scoped model
可以对全局状态进行管理,数据从上到下传递,也可以从下到上传递,
但是数据和UI没有隔离,不便维护,造成单个dart 臃肿 ,无法管理本地状态
4 BLoc
响应式编程,相当于mvvm ,既能管理本地状态也能管理全局状态,可以从上往下,也可以从下往上传,维护方便,数据于UI隔离,目前比较好的框架,
现在你知道怎么选择了吗下篇重点讲bloc实践下一节Flitter—bloc