界面层:页面顶节点套了一个EasyBindWidget,可以保证依赖注入实例可以自动回收
class EasyXEbxCounterPage extends StatelessWidget { final EasyXEbxCounterLogic logic = Easy.put(EasyXEbxCounterLogic()); @override Widget build(BuildContext context) { return EasyBindWidget( bind: logic, child: BaseScaffold( appBar: AppBar(title: const Text('EasyX-自定义Ebx刷新机制')), body: Center( child: Ebx(() { return Text( '点击了 ${logic.count.value} 次', style: TextStyle(fontSize: 30.0), ); }), ), floatingActionButton: FloatingActionButton( onPressed: () => logic.increase(), child: Icon(Icons.add), ), ), ); } }效果图
总结这俩种刷新模式,含金量高的,应该还是自动刷新的机制,思路很有趣,响应式变量和刷新控件通过静态变量的形式建立起联系,cool!又是一种骚操作!
这俩套状态管理机制,我都给出了对依赖注入对象,自动回收的解决方案,希望对大家的思路有所启迪。
最后终于把最后一篇GetX的原理剖析写完了(只针对GetX状态管理这部分内容),了了一桩心事。。。
有些流程比较绕,特地画了一些图,图文并茂总会让人心情愉悦嘛......
如果大家认真看完了整片文章,可能会发现:状态管理+依赖注入,可以使得使用场景大大的被拓展
GetBuilder的自动回收就是借助依赖注入,无缝获取注入实例,从而实现自动回收的操作
而且GetBuilder还无需额外传参数!
整篇文章写下来,我觉得真的尽力了
从InheritedWidget到路由
然后到依赖注入
再就是俩种状态框架原理剖析
最后依据俩种刷新机制,手搓俩套状态管理框架
也算是层层递进的将其中的知识,一点点的展示在大家的面前,希望可以帮到各位!!!
系列文章 + 相关地址
文章中Demo的Github地址:flutter_use
Flutter GetX使用---简洁的魅力!
源码篇:Flutter Bloc背后的思想,一篇纠结的文章
源码篇:Flutter Provider的另一面(万字图文+插件)