provider_base_tools
provider_base_tools 是一个基于provider的封装,主要是为了简化provider的使用,提高开发效率。
-
安装 (推荐 git 方式集成, 方便更新. 配合provider_temp_gen模板生成器使用提升开发效率)
provider_tem_gen 使用文档
dependencies: provider_base_tools: ^0.1.6 -
使用
2.1. 创建一个model类,继承BaseArgmentModel (用户页面直接传递参数)
class TestBaseArgemnt extends BaseArgementModel { TestBaseArgemnt.getInstance(super.initial) : super.getInstance(); }2.2. runApp方法中使用
void main() { runApp( ChangeNotifierProvider<TestBaseArgemnt>.value( value: TestBaseArgemnt.getInstance( BaseNoneState(), ), builder: (context, child) => const MyApp(), ), ); }2.3. 页面中使用 2.3.1. 创建一个state类 用于存储数据,与view,model进行交互
class DemoState { DemoState(); }2.3.2. 创建一个model类, 继承BaseModel
class DemoModel extends BaseModel<DemoState> { DemoModel.getInstance(super.initial) : super.getInstance(); @override bool get dataIsEmpty => false; // 页面显示状态根据此值判断 @override List<VoidAsyncFunction> initFutures() { // 所有的初始化异步方法 (例如:第一次进来的网络请求) return []; } }2.3.3. 创建一个view类,继承InitBaseStatelessWidget<T,S> 绑定model与state类
class DemoPage extends InitBaseStatelessWidget<DemoModel, DemoState> { const DemoPage({super.key}); @override void finish() {} @override DemoModel getModel() { return DemoModel.getInstance(DemoState()); } @override Widget successedBuilder(BuildContext context) { return const Center( child: Text('successedBuilder'), ); } } -
说明
类名 说明 BaseArgementModel 用于页面传递参数 BaseModel 用于存储数据,与view,model进行交互 BaseNoneModel 提供页面不需要model交互的公共类 BaseNoneState 提供页面不需要state交互的公共类 InitBaseStatelessWidget 用于创建页面 BaseWidget 用于定义默认布局 GetLefeCycleMixin 自定义生命周期 (暂未完善) ProviderSingleTickerProviderStateMixin 自定义单个TickerProvider (方便model使用TickerProviderStateMixin,初始化ticker对象) ProviderTickerProviderStateMixin 自定义多个个TickerProvider (方便model使用TickerProviderStateMixin,初始化ticker对象) CustomFloatingActionButtonLocation 自定义FloatingActionButtonLocation位置 KeepAliveWarpperWidget 状态保活页面 WillPopScopeWidget 对于WillPopScope的封装 ContextList Context的栈堆管理 (一般适用于框架,开发中用不到这个类,可无视) OneContext 用于获取context OneContext
方法名 说明 context 返回当前页面的全局context childContext 返回当前Provider的context BaseModel
方法名 说明 dataIsEmpty 页面显示状态根据此值判断 exception 捕获的异常信息 state 返回State对象 viewState 页面显示状态 setState() 通知页面刷新 initFutures 所有的初始化异步方法 (例如:第一次进来的网络请求) refresh() 刷新页面 setLoading() 设置页面状态为加载中 setSuccess() 设置页面状态为加载成功 setError() 设置页面状态为加载失败 setEmpty() 设置页面状态为加载空 InitBaseStatelessWidget
方法名 说明 getModel() 返回Model对象 (调用此方法会重新走model构造方法) childContext 返回当前Provider的context context 返回当前页面的全局context model 返回Model对象 state 返回State对象 onReady() 进入build之前的回调 (已移除) finish() 页面销毁 successedBuilder() 页面加载成功的布局 loadingBuilder() 页面加载中的布局 errorBuilder() 页面加载失败的布局 emptyBuilder() 页面加载空的布局 getScaffold() 返回一个Scaffold对象 (自定Scaffold,可根据参数注释自定义) showScaffold 是否需要Scaffold (默认true) BaseWidget
方法名 说明 loadingWidget 默认加载中的布局 (可自定义) errorWidget 默认加载失败的布局 (可自定义) emptyWidget 默认加载空的布局 (可自定义)
Libraries
- base/base_argment_model
- base/base_model
- base/base_none_model
- extension/get_lifecycle_mixin
- extension/provider_single_ticker_provider_state_mixin
- extension/provider_ticker_provider_state_mixin
- interface/base_widget
- provider/provider_base_widget
- provider_base_tools
- provider_base_tools_method_channel
- provider_base_tools_platform_interface
- tools
- utils/context_list
- utils/one_context
- widget/block_keep_alive_warpper_widget
- widget/keep_alive_warpper_widget
- widget/will_pop_scope_widget