# app-provider-framework **Repository Path**: git-workspace/app-provider-framework ## Basic Information - **Project Name**: app-provider-framework - **Description**: app基本框架 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-05-20 - **Last Updated**: 2026-03-02 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # App Provider Framework 框架使用说明 引入说明: ```yaml framework: git: url: git@8.210.227.63:flutter_plugin/app-provider-framework/app-provider-framework.git ref: release ``` ### 一、对应全局一些数据需要继承`DSState`,例如: ```dart import 'package:framework/app_framework.dart'; class AppState extends DSState { /// /// 当持久化时需要实现fromJson, /// 当app启动之后读取到缓存的数据设置到当前 /// 因为从持久化数据读取到数据是异步的, /// 所以当读取到数据之后需要重新notifyListeners /// @override void fromJson(dynamic data){ this.notifyListeners(); } /// /// 当我们更新数据时,需要把数据转为Map,重新保存到持久化中 /// void update(String key){ this.notifyListener(data:{'key':'value'}); } /// /// 1、如果需要持久化则定义我们持久化的key,若为空表示不需要持久化 /// @override String get getKey => 'app_state'; } ``` ### 二、在`MaterialApp`中引入框架中的`DSFrame`, ```dart MaterialApp( ... builder: (BuildContext context, Widget child) { return DSFrame.instance.build( context, child: child, data: MediaQuery.of(context).copyWith(textScaleFactor: 1.0), listener: (e, String code) { ///拦截用户点击了那个按钮, }, ); } ... ); ``` 引入之后就可以使用loading,toast,dialog,等,例如 ```dart DSFrame.toast("toast弹窗"); ``` ### 三、页面中使用`DSProviderWidget>`,例如 (1)、 页面 ```dart ILoginAction loginAction = LoginAction(); @override Widget build(BuildContext context) { return DSProviderWidget>( builder: (context, child) { return Scaffold( appBar: AppBar(title:Text(S.of(context).signin),), body: _buildBody(), ); } ); } ``` (2)、 Action,继承IDSAction ```dart abstract class ILoginAction extends IDSAction{ /// 自定义页面需要使用的方法 /// /// /// 代理设置(非必须) /// ILoginAction({NavActionDelegate delegate}); } class LoginAction extends ILoginAction{ /// /// 根据上方设置 /// NavActionDelegate delegate; NavAction({this.delegate}):super(delegate:delegate); /// /// 初始化方法 /// @override void initState() { this.vm = LoginVo(); print(" =======> initState"); } /// /// 非必须实现 /// 用于获取其他保存的数据状态,比如用户信息 /// @override void initBuilder(BuildContext context){ AppState appState = Provider.of(context,listen:false); print(" =======> initBuilder :${appState.localeKey}"); } /// /// 非必须实现 /// @override void dispose() { super.dispose(); } } /// /// 非必须 /// abstract class NavActionDelegate { /// /// 跳转到指定页面 /// index 跳转页面的索引 /// void onPageChanged(int index); } ```