flutter mvvm框架(基于provider)

18 篇文章 0 订阅

gitHub地址

 

 

 

 

 

 

 

 

 

上图为Android 中的mvvm

MVVM模式分为Model,View,ViewModel 三个部分

(1).Model:数据层,包含数据实体和对数据实体的操作
(2).View:界面层,对应于Activity,XML,View,负责数据显示以及用户交互。
(3).ViewModel:关联层,将Model和View进行绑定,Model或者View更改时,实时刷新对方

flutter 也是类似

State的封装

 

abstract class BaseState<T extends StatefulWidget, M extends BaseViewModel>
    extends State<T> {
  late M viewModel;
  late String pageName;

  @override
  Widget build(BuildContext context) {
    // TODO: implement build
    return build(context);
  }

  Widget initWiew() {
    return Consumer<M>(builder: (BuildContext, provie, _) {
      return viewModel.isLoading ? LoadingWidget() : buildView();
    });
  }

  Widget buildView();

  @override
  void didChangeDependencies() {
    // TODO: implement didChangeDependencies
    super.didChangeDependencies();
    print("didChangeDependencies: ${pageName}界面");
  }

  @override
  void didUpdateWidget(covariant T oldWidget) {
    // TODO: implement didUpdateWidget
    super.didUpdateWidget(oldWidget);
    print("didUpdateWidget: ${pageName}界面");
  }

  @override
  void deactivate() {
    // TODO: implement deactivate
    super.deactivate();
    print("deactivate:${pageName}界面");
  }

  @override
  void dispose() {
    // TODO: implement dispose
    super.dispose();
    print("dispose 离开${pageName}界面");
    print("销毁${pageName}界面");
  }
}

viewModel封装

/**
 *
 * @class name:
 * @class describe
 *@class name:
 * @author XUIELIANG
 * @time 
 * @change
 * @chang time
 * @class describe
 */
import 'package:flutter/widgets.dart';

abstract class BaseViewModel with ChangeNotifier {
  BuildContext context;

  BaseViewModel(this.context);

  bool _isLoading = false;

  bool get isLoading => _isLoading;

  set isLoading(bool isLoading) {
    if (_isLoading != isLoading) {
      _isLoading = isLoading;
    }
    notifyListeners();
  }

  ///刷新数据
  @protected
  Future refreshData({bool isShowLoading = true});
}

 

 

 

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值