hqt 项目总结

  1. 框架层
    1. 网络层
    2. ViewModel关系图
  2. 模板化代码
    1. 工具
  3. 其它
  4. 优缺点分析
    1. 优点
    2. 缺点
    3. 解决方案

项目结束之后的一些总结与沉淀。

  • flutter
  • getx

框架层

网络层

  • ApiController:基类接口控制器,将网络接口绑定到GetXController的生命周期上,接口所需要用到的参数会全部放入allParams 字典中。泛型为T。
  • PageController: 分页接口控制器,封装分页业务。泛型为List
  • ListController:有限列表接口控制器,泛型为List
  • MtController:针对接口返回类型T进行再次转换成为M的控制器。
  • ResponseMixin: 封装接口统一解析,错误处理。

getx

ViewModel关系图

  • 页面的命名以Page结尾,视图的命名以View结尾,网络接口控制器的命名以Controller结尾,布局的命名以Layout结尾。
  • 网络接口类型命名:分页命名pagi,有限列表命名list,操作类命名curd
  • 网络接口控制器(Controller)与视图(View)是一对一的关系。如果视图是多个样式,可以在视图内定义【type】类型区分。比如登陆:LoginController <—> LoginView
  • 页面(Page)与视图(View)是一对一或一对多的关系。例如:HomePage里有3个View,HomeView、ExpolreVIew、UserView。
  • 视图(View)可以看成是普通的Widget,所以视图中可以包含其它视图(View

下面为登录页面的图解。

api_draw_io.drawio

模板化代码

工具

  • 开发文档,这里是excel格式,用来输出app功能,保证视图跟网络请求一对一关系。比如登陆:user/login
  • 网络请求文档 json 格式,后端网络使用的 swagger,所以这里很轻松拿到接口数据
  • 各种解析脚本,这里是excel2json.py、swagger2dart.py、其它模板性文件生成脚本等
  • openapigenerator: 根据 swagger 配置文件生成dart客户端代码
  • vscode 插件,根据框架层,编写插件,快捷生成模板代码

其它

  • 规范后端接口返回
  • 规范UI设计

优缺点分析

优点

  • 业务分层,更便于维护、测试
  • 自动化生成重复性代码,只需要把精力关注在具体业务上

缺点

  • 设计把接口数据分层展示时,传递数据不便
  • 相同功能,相同界面,后台多个接口,无法满足需求

解决方案

  • 暂时打破Controller与View是一对一的关系,改成多对多的关系,或Page绑定最先显示View的Controller,实现Page层的数据更新
  • 通过泛型的方式将Controller绑定到View上,不传泛型,则绑定同名Controller
  • 将View的render方法暴露给其它组件,不调用render方法,则使用内置View

转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 chgocn@gmail.com
笔记