[toc]
一、对比[MVC、MVP、BloC、Redux]四种架构
MVC、MVP、BloC、Redux四种架构在Flutter上的尝试
对比[MVC、MVP、BloC、Redux]四种架构的好坏,
对比[MVC、MVP、BloC、Redux]四种架构的好坏,最终还是的回归到状态管理上来。
MVC
、MVP
的状态管理都是采用setState
方式,而BloC
和Redux
都有自己的一套状态管理。当项目最初不是很复杂的时候,采用
setState
方式更新数据是可以的。但是随着功能的增加,你的项目将会有几十个甚至上百个状态,setState
出现的次数便会显著增加,每次setState
都会重新调用build方法,这势必对于性能以及代码的可阅读性带来一定的影响。所以就放弃了MVC
、MVP
这两种架构。最初对OpenGit_Flutter进行架构重构的时候,用到的是
Redux
,到涉及到多个页面复用时,例如项目中的项目页
,每涉及到一个复用页面就需要在state
内定义一些列的变量,这是个很痛苦的过程,所以后面就放弃了用Redux
,但是Redux
在保存全局状态有优势,例如主题、语言、用户资料等。后面又尝试了BloC
,该架构在多页面复用时,就没存在Redux
的问题。所以最后我采用的架构是
Bloc+Redux
,用BloC
控制局部状态,用Redux
控制全局状态。
单例
Flutter中,dart的单例模式设计
1 | // 创建一个单例的Manager类 |
数据管理
1 | import 'package:shared_preferences/shared_preferences.dart'; |