源码篇:Flutter Bloc背后的思想,一篇纠结的文章 (7)

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; } }

效果图

EasyC

全局也是可以的,和Provider没什么不一样,我这边就不重复写了

总结

这手搓的EasyC框架,保留Bloc刷新机制的精髓,同时,也做了大量的精简

相信有缘人只要用心看看,一定能够理解的

Bloc的源码并不复杂,他是对Stream的使用,做了一个大大的精简,基本使用痛点,全都封装起来,内部处理了

最后 留言板

Provider和Bloc的源码解析终于写完了,就差最后一篇GetX了。。。

img

为了证明我写的分析源码是有作用且有效果的,在末尾,我都根据其状态管理框架的刷新机制,手搓了一个全新的状态管理框架

选择状态管理框架,应该是一件比较慎重的事;事先可以先看看其原理,理解了他的内部运转机制,就完全可以去按需选择了,因为你明白了它的内部运转机制,就算使用过程中出现什么问题,你也能从容应对了;如果你怕作者弃坑或不满意其功能,选择你自己想要的刷新机制,自己去手搓一个!

Provider,Bloc,GetX这三个框架,我都写了相应插件,如果你选择的状态管理框架是这个三者中任意一个,相信这些插件,都能帮你完成一些重复的工作量

image-20210614225646560

相关地址

文章中Demo的Github地址:flutter_use

Web效果:https://cnad666.github.io/flutter_use/web/index.html

如果相关功能按钮没看到,可能需要你清下浏览器缓存

Windows:Windows平台安装包

密码:xdd666

系列文章

源码篇:Flutter Provider的另一面(万字图文+插件)

源码篇:Handler那些事(万字图文)

源码篇:ThreadLocal的奇思妙想(万字图文)

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwsxyx.html