Flutter 研发阶段性总结(三) 基本设计模式MVP

本文介绍了Flutter中使用MVP设计模式进行应用开发的实践,包括基础的MVP结构声明,页面Presenter和View接口的声明及实现。通过示例展示了如何在页面加载数据和响应用户操作时保持代码整洁。进一步探讨了如何在不同环境中切换数据源,例如开发环境与生产环境之间的切换。
摘要由CSDN通过智能技术生成

在上篇内容的基础上,我们已经可以写一些简单的应用了,但是可以预见到的是,随着页面功能的增多,函数个数、数据与页面的交互也会随之增对,随之而来的就是散落在各处的函数和setState,代码就越来越难维护了。因此需要适当的引入一些设计模式,将界面、数据与逻辑解耦。这里首先提一下MVP。

什么是MVP?

网络上文章很多。。。。。就不重复了。

Flutter上的MVP实践

这里直接拿代码说话,先说说MVP的具体实践,然后举个例子:同一个功能页面切换不同的数据源。

1. 基础MVP结构声明

Dart语言貌似是没有interface的,这里用的是abstract class。

abstract class IView<T> {
   
  setPresenter(T presenter);
}
abstract class IPresenter {
   
  init();
}

2. 声明具体页面的Presenter和View接口

假设我们有一个页面在加载的时候会从web接口获取数据并显示,同时页面可以响应用户的输入,比如上拉加载更多。则从页面行为层面我们可以抽象如下接口:

abstract class DemoPagePresenter implements IPresenter {
   
  // 初始化时候加载第一批数据
  void loadData();
  // 用户操作加载更多
  void loadMore();
}
abstract class DemoPageView implements IView<DemoPagePresenter> {
   
  // 第一批数据加载成功
  void onLoadSuccess(data);
  // 第一批数据加载失败
  void onLoadError();
  // 更多数据加载成功
  void onLoadMoreSuccess(data);
  // 更多数据加载失败
  void onLoadMoreError();
}

从这里可以看出, Presenter 主要负责事件驱动或者用户触发后的业务行为,在这里包括了页面初始化时候的加载数据loadData 和用户上拉列表时候的 loadMore
而View主要负责页面逻辑处理后的结果展现

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值