logic
class CounterEasyC extends EasyC<CounterEasyCState> { CounterEasyC() : super(CounterEasyCState().init()); ///自增 void increment() => emit(state.clone()..count = ++state.count); }state
class CounterEasyCState { late int count; CounterEasyCState init() { return CounterEasyCState()..count = 0; } CounterEasyCState clone() { return CounterEasyCState()..count = count; } }效果图
全局也是可以的,和Provider没什么不一样,我这边就不重复写了
总结这手搓的EasyC框架,保留Bloc刷新机制的精髓,同时,也做了大量的精简
相信有缘人只要用心看看,一定能够理解的
Bloc的源码并不复杂,他是对Stream的使用,做了一个大大的精简,基本使用痛点,全都封装起来,内部处理了
最后 留言板Provider和Bloc的源码解析终于写完了,就差最后一篇GetX了。。。
为了证明我写的分析源码是有作用且有效果的,在末尾,我都根据其状态管理框架的刷新机制,手搓了一个全新的状态管理框架
选择状态管理框架,应该是一件比较慎重的事;事先可以先看看其原理,理解了他的内部运转机制,就完全可以去按需选择了,因为你明白了它的内部运转机制,就算使用过程中出现什么问题,你也能从容应对了;如果你怕作者弃坑或不满意其功能,选择你自己想要的刷新机制,自己去手搓一个!
Provider,Bloc,GetX这三个框架,我都写了相应插件,如果你选择的状态管理框架是这个三者中任意一个,相信这些插件,都能帮你完成一些重复的工作量
文章中Demo的Github地址:flutter_use
Web效果:https://cnad666.github.io/flutter_use/web/index.html
如果相关功能按钮没看到,可能需要你清下浏览器缓存
Windows:Windows平台安装包
密码:xdd666
系列文章
源码篇:Flutter Provider的另一面(万字图文+插件)
源码篇:Handler那些事(万字图文)
源码篇:ThreadLocal的奇思妙想(万字图文)