flutter项目架构
创始人
2024-06-01 03:35:13
0

项目架构

Provider+MVVM

目录结构

├── all_pages 存放所有的逻辑页面
│   ├── example 样例
│   │   ├── example_model.dart mode
│   │   ├── example_page.dart  page
│   │   ├── example_view_model.dart viewMode
│   │   ├── model 如果页面需要model的不只一个,建一个model 文件夹
│   │   └── view 如果页面需要的view的不只一个,建一个View 文件夹
├── ext 存放扩展
├── global 
│   ├── cache 内存缓存
│   ├── config 配置
│   ├── event 事件
│   ├── net 网络请求
│   ├── route 路由
│   └── theme 主题
│   └── model model
├── helper 对第三方库的封装
├── l10n 国际化
├── lib  自定义的的库或者下载的第三方库
│   ├── module
│   └── mvvm
├── manager 数据封装和管理
├── service 封装的服务
├── tools 不包含本项目逻辑的工具类
├── utils 包含本项目业务逻辑的工具类
├── view  包含本项目业务逻辑的的封装组件,这里
└── widget 包含本项目业务逻辑的的组建

运行

准备

  • 更新库:flutter pub get
  • 国际化:flutter gen-l10n
  • 运行

使用命令

  • flutter run --debug/release ---dart-define=B_ENV=debug/verify/local/pred/prer/release
  • eg:flutter run --debug --dart-define=B_ENV=debug 就可以运行开发环境
  • eg:flutter run --debug --dart-define=B_ENV=verify 就可以运行测试环境

android studio 配置如下

  • --dart-define=B_ENV=debug
  • 编译配置
  • 选择运行

打包

准备

project_path=$(cd `dirname $0`; pwd)
cd $project_path
cd ..
git pull
flutter clean
flutter pub get
flutter gen-l10n
cd ios
pod install

android

  • 给测试打测试环境的包,用Debug 编译模式
    • flutter build appbundle --release --flavor test
  • 给测试打灰度环境的包,用Pre 编译模式
    • flutter build appbundle --release --flavor pre
  • 给测试打生产环境的包,用Release 编译模式
    • flutter build appbundle --release --flavor pro

iOS

IOS Xcode

  • 给测试打测试环境的包,用Verify 编译模式
  • 给测试打灰度环境的包,用Pre 编译模式
  • 给测试打生产环境的包,用Release 编译模式

fastlane

  • 上传到TestFlight fastlane upload_release
  • 上传到蒲公英 fastlane upload_pgy e:Verify (Verify PreR Release Loc 可以配置不同的环境)

命名规范

  • 项目工程名用下划线_命名
  • 文件夹用下划线_命名
  • 图片命名下划线_命名 并且加上_img 后缀,方便后面写工具来排重和删除多余的文件
  • 类用大驼峰
  • 方法,变量用小驼峰
  • 图片命名下划线_命名
  • 不同的类或者文件都需要加上对应的后缀
    • Page eg:user_info_page.dart UserInfoPage
    • Model eg:user_info_model.dart UserInfoModel
    • ViewModel eg:user_info_view_model.dart UserInfoViewModel
    • Utils eg:user_info_utils.dart userInfoUtils
    • Tools eg:user_info_tools.dart UserInfoTools
    • Helper eg:user_info_helper.dart UserInfoHelper

代码规范

  • 目前遵守flutter_lints的规范

git管理

  • 命名统一使用下划线_

代码提交

  • fix:dec 修复bug
  • feat:dec 开发一个新功能
  • optimize:dec 优化了
  • delete:dec 删除了
  • doc:dec 添加了文档或者注释

分支管理

  • master 审核成功,并且已经上架,线上正在使用的版本
  • release 开发完成,准备上架的版本
  • dev 能够正常运行并且下一个迭代要上线版本
  • feature_1.2.0_dec 正在开发的版本
  • 开发一个新功能 git checkout -b feat_dec
  • 开发完成合并到dev
  • 测试阶段,从dev 打包,小bug 可以直接在dev上修改,大bug 需要新牵一个fix_dec 分支
  • 产品验收阶段 合并代码到release 分支,如果出现bug,需要重release 拉一个新分支fix_dec 修复完成和,同时合并到dev和relese 分支
  • 上架成功 将release 代码合并到master 并打一个tag 如果线上出现bug 需要修复也需要拉一个fix_dec 分支,修复完成后需要同时合并到dev和release 分支

相关内容

热门资讯

李光洁32天走7500公里吃8... 李光洁32天走7500公里吃8城,《拿一座城市下酒》这部纪录片怎么样?我觉得这部纪录片非常好,观看的...
每我世如你果只没界喜就欢的生一... 每我世如你果只没界喜就欢的生一爱有你过在想会。把这22个字组成一句话。我想过,如果在每一生只喜欢你,...
调查校园里的植物和动物说说有哪... 调查校园里的植物和动物说说有哪些动植物?可以分成几类?兰花,梅花可人丌··植物:乔木(杨树、柳树、银...
血脂高的原因? 血脂高的原因?血脂高的原因高血脂的诱因包括原发性和继发性两种:原发性高血脂症的病因:1、遗传因素。2...
为什么孩子总是重复看同一集动画... 为什么孩子总是重复看同一集动画片?是在传递这3个信号 小孩子爱看动画片是非常普遍的,动画片带给他们动...
终极三国里 49集刘备为什么这... 终极三国里 49集刘备为什么这么做?有没有官方回答?下集自己看吧 现在不会有官方回答的哟第一:可能真...
西式糕点制作大全的内容简介 西式糕点制作大全的内容简介《西式糕点制作大全》主要介绍了制作甜点的基本知识,例如各种制作工具,制作点...
逻辑思维又是什么?就是推理吗,... 逻辑思维又是什么?就是推理吗,怎么培养!?逻辑思维是一种严格分析思维。不一定是推理。推理是逻辑思维的...
囊萤夜读有一句俗语就是出自这个... 囊萤夜读有一句俗语就是出自这个故事你知道是什么吗?囊萤映雪 ( náng yíng yìng xuě...
什么是不伦恋情? 什么是不伦恋情?什么是不伦恋情.,?男跟女年龄相差很大?还是?男的比女的小?还是老夫少妻?是近亲谈恋...
有书名带晨星的嘛? 有书名带晨星的嘛?有书名带晨星的嘛?晨星传这本书。漫画书晨星物语
如果有些事情说不出口怎么办? 如果有些事情说不出口怎么办?烦恼皆是因为自己过分的执着 即使你在这样子下去 更不就不会有好的结果 为...
有哪些类似于《非自然死亡》题材... 有哪些类似于《非自然死亡》题材的日剧推荐?非自然死亡的题材电影确实不多,电视剧的话也不好找啊。不喜欢...
素书全集的内容简介 素书全集的内容简介 本书采用了《素书》的权威原著,参照《四库全书》并加上了宋代宰相张商英的注和清代王...
【世纪花园】小区对口的学校有重... 【世纪花园】小区对口的学校有重点小学和初中吗?世纪花园东区里有未来强者幼儿园,小区南边有个华兴小区,...
东南大学现有的专业中有哪些是属... 东南大学现有的专业中有哪些是属于老东南的1928年学校改名为国立中央大学,设理、工、医、农、文、法、...
一个男人一有钱就请朋友吃饭,没... 一个男人一有钱就请朋友吃饭,没钱就又说,买东西还赊账,商店里的老板都找上门来了?像陵念前这种男人的话...
坟上栽什么草好? 坟上栽什么草好?坟地种什么草好耐旱坟上栽野蕨草、扎根不深、浅根植物、可以固土、南方雨水多、不会造成坟...
关于国富潜力基金 关于国富潜力基金我9月24日上午买的国富基金,申购价格是9月24日开盘的价格吗?还是9月28日开盘的...
我是一个高中生。想学武术。在学... 我是一个高中生。想学武术。在学校没什么时间。是练散打还是跆拳道好。我是一个高中生。想学武术。在学校没...