序言
Flutter 项目工程化
《Flutter 项目工程化》一书是Flutter 快速开发实战专栏的上册,笔者以快速命名是因为 “完成要比完美更重要”,“快速推进,打破常规”,“天下武功,唯快不破”,对于如今迅猛发展的互联网,也是如此。要知道,用户多变,所以唯一能够抓住机会的办法就是快。
在互联网行业,要成就一个项目,idea 一文不值,不仅是在中国,在哪都一样。笔者希望读者通过《Flutter 项目工程化》这本书能把你的想法在技术层面上来讲从不可行到可行,提高你的执行力,最终做成一款好的APP。
由于 Flutter 目前没有官方推荐的项目结构,为了易于维护,易于扩展, 提高开发速度,通过 Flutter 持续交付的最佳实践,所以我们必须在开发所有功能模块之前,发现这些模块开发过程中的共同点,将相似的代码归类,将差异较大的代码剥离,提高抽象的能力,笔者认为这就是 Flutter 项目的工程化。
演示
项目地址
发现有人滥用源码用作商业用途,自2022年3月1号后不再公开源码。
本书特色
- 全面支持空安全
- 健全的日志系统
- 合理规范的开发流程,从零到一,由浅入深
- 详细的代码解读,图文配合一目了然
- 使用饱受好评的第三方插件库
- 不以解决实际问题为最终目的的编程都是耍流氓
适宜人群
- 本书不讲 Flutter 小部件,故不适合作为 Flutter 入门书籍
- 缺乏大型 Flutter 项目经验的开发人员
- 独立完成项目或毕设的大学生
项目结构
Flutter 作为最近很火的一个跨平台技术,以其高性能、跨平台的一系列优秀特性成功吸引了很多开发者和组织的青睐,真正实现了一次编码处处运行。但是由于其不同于传统 Android 或 iOS 开发的 Widget 机制,使得视图的代码往往冗长、不够简洁,解决这种困境的方法就是在开发中合理地运用合适的架构模式,使得程序的视图与数据分离,这样视图层的代码只用专心进行视图的描述和操作即可,不涉及过多复杂的数据操作,这样就可以使视图层的代码达到简洁。
Flutter 新项目主要包含以下几个目录:
-
android –生成Android应用。任何关于Android的实现都将放在此文件夹中。
-
ios -生成的iOS应用。任何关于iOS的实现都将放在此文件夹中。
-
web -生成的Web应用。任何关于Web的实现都将放在此文件夹中。
-
lib-主要代码文件都在这里创建,main.dart -主文件
-
test–用于单元测试
笔者参考了很多 Github 上面开源的 WanAndroid 项目,最终总结设计了一套我个人比较青睐的工程结构,从而大大提高生产力。
|---flutter_locyin
| |---android
| |---assets
| | |---fonts // 字体资源
| | |---icon // 图标资源
| | |---images // 图片资源
| | |---json // 本地模拟JSON
| |---ios
| |---lib
| | |---data
| | | |---api // http 接口和服务类
| | | |---model // 数据模型
| | |---common
| | | |---lang // 语言目录
| | | └──en_US // 英文语言包
| | | └──zh_Hans // 中文语言包
| | | └──translation_service // 翻译服务类
| | |---init // 启动目录
| | | └── app_init.dart // 捕获异常
| | | └── default_app.dart // 默认 App 启动
| | |---page
| | | └── index.dart // 主要用于底部导航、状态保持
| | | └── xxx.dart // 所有页面布局,不再一一列出
| | |---route // 路由目录
| | | └── route_map.dart // Getx 路由表
| | | └── route.dart // 二次封装 Getx
| | |---utils // 二次封装第三方库目录
| | | └── provider.dart // APP 状态管理
| | | └── sputils.dart // 数据持久化存储
| | | └── dio_manager.dart // 二次封装 Dio,配置信息、请求日志、自动处理错误等
| | |---widgets // 封装的小部件目录
| | └── main.dart // APP 入口文件
| |---test
| |---web
| └── pubspec.yaml //依赖配置管理
在本书上册前四章将会一步步完成这个工程结构,依次对新增目录、文件和相应的插件的使用做详细说明。
本书组织结构
- 第一章,起步。搭建开发环境,新建一个空项目,Git 和基本信息的配置。
- 第二章,初始化。初始化项目。包括国际化,捕获异常,日志拦截,Sentry 上报错误和导航栏的实现。
- 第三章,抽屉相关。以抽屉为入口,依次展开 GetX 路由管理,内置浏览器的使用等。以 GetX 国际化为入口,依次展开持久化存储,GetX 状态管理,最后完成昼夜模式切换小案例。
- 第四章,用户相关。本章第一节完成了二次封装 Dio ,实现了平滑刷新 Token ,清晰的控制台请求日志,自动处理响应错误信息等;第二节完成了手机号注册登录为一体的流程;第三节完成了用户信息实体类的转化,用户信息状态录入和路由中间件等功能。
- 第五章,启动相关。依次完成了闪屏页、广告页、欢迎页和隐私声明弹窗,最后修改了应用启动图标和应用名称。
版权声明
本书《Flutter 项目工程化》版权归作者 Lotvin 所有。
本书受版权法保护,任何组织或个人不得以任何形式分发或做商业使用。