flutter app开发梳理

本章新建一个Flutter工程,实现一个简单的Github客户端。这个实例的主要目标有两个:

  1. 带领读者了解如何使用Flutter来开发一个完整APP,了解Flutter应用开发流程及工程结构等。
  2. 对前面章节所学内容的一个应用及总结

需要注意的是,由于Github本身功能非常多,我们的焦点并不是去实现Github的所有业务功能。因此,我们只需要实现一个APP的骨架,能达到上面这两点即可。下面对我们要实现的功能如下:

  1. 实现Github账号登录、退出登录功能
  2. 登录后可以查看自己的项目主页
  3. 支持换肤
  4. 支持多语言
  5. 登录状态可以持久化;

要实现上面这些功能会涉及到如下技术点:

  1. 网络请求;需要请求Github API。
  2. Json转Dart Model类;
  3. 全局状态管理;语言、主题、登录态等都需要全局共享。
  4. 持久化存储;保存登录信息,用户信息等。
  5. 支持国际化、Intl包的使用

现在,目标已经确定,在接下来章节中,我们将分模块一步一步实现上述功能

flutter app代码结构

我们先用命令来创建一个全新的Flutter工程,命名为github_client_app

  1. flutter create github_client_app

也可以使用编辑器来创建工程,创建新工程的步骤视使用的编辑器而定,编辑器创建Flutter工程参考
创建完成后,工程结构如下:

  1. github_client_app
  2. ├── android
  3. ├── ios
  4. ├── fonts 用于保存Icon文件
  5. ├── imgs 用于保存图
  6. ├── jsons Json转成Dart Model类,用于保存Json文件
  7. ├── l10n-arb 用于保存各国语言对应的arb文件
  8. ├── lib
  9. ├── common 一些工具类,如通用方法类、网络接口类、保存全局变量的静态类等
  10. ├── l10n 国际化相关的类都在此目录下
  11. ├── models Json文件对应的Dart Model类会在此目录下
  12. ├── states 保存APP中需要跨组件共享的状态类
  13. ├── routes 存放所有路由页面类
  14. └── widgets APP内封装的一些Widget组件都在该目录下
  15. └── test

⚠️ 注意,使用不同的框架或技术选型会对代码有不同的组织方式,因此,本节介绍的代码组织结构并不是固定或者“最佳”的,在实战中,读者可以自己根据情况调整源码结构。但是无论采取何种源码组织结构,清晰和解耦都是一个通用原则,我们应该让自己的代码结构清晰,以便交流和维护