Flutter项目结构
2022-01-19 本文已影响0人
愿你我皆是黑马
介绍
下面是本人自己写Flutter项目用的目录结构。因为公司还没有使用Flutter。纯属个人项目的目录结构。所以目的是希望有大型Flutter项目经验的前辈帮忙指出各个地方的不足之处。
界面
- 箭头4:所有界面都在此目录下创建一个对应的文件夹。以首页home的第一个tab栏为例(home_tab1)
- 箭头5:为一个页面。箭头5指向文件夹根据名字可知是首页tab栏1的页面。内部必有一个dart文件(箭头7)继承自统一操作生命周期的父Widget(箭头2)。和只有在该页面中才使用的组件组成的一个文件夹widget(箭头6)
- 箭头6:是当前页面拆分出来的一个个小组件,只在当前界面使用。不是公共的,当需要公共的组件则需要放入箭头3文件夹中。
- 箭头3:存放公共组件,每个组件以Comm开头和页面内组件(箭头6)区分开。
- 箭头1:存放不是单独页面仅有的Widget
- 箭头2:定义页面的公共BaseStatefulWidget、公共的BaseState<BaseStatefulWidget>和公共的生命周期事件处理器。
所有页面都必须继承自该BaseStatefulWidget,且内部的State必须继承自BaseState<BaseStatefulWidget>。
父类BaseState中自动使用继承自WidgetsBindingObserver的LifecycleEventHandler。 - 箭头7:表示一个页面的入口文件(路由指向的都是这个位置的Widget)。
网络请求
网络请求这部分,用的是在空闲的时候封装的一套接口请求框架。为了统一各种服务器报文的json数据格式。
- 将网络请求初始化代码写在config/http_init中,并在main.dart的启动方法中调用初始化。
- 请求接口:
- 响应实体类
路由
- 通过一个路由工具类通过Navigator在各个路由之间跳转
- 在mian.dart配置路由
- 路由跳转
UtilRouter.pushName(context, UtilRouter.login); //添加后,跳转登录界面
... 等等
常量
- 公共颜色、尺度、字符串、webveiw打开网页的一系列常量的定义。
插件
- 插件初始化:在config/*下编写各类插件需要的初始化操作,并且在main.dart中调用。
其他的大多数个人封装的一些平台插件了,比如:
- 网页离线包:由于开发原生时写了支持离线包的webview,所以写成了flutter插件。
- 权限请求:好像有出来权限请求框架,还没来得及测试。就直接用来自己的。
- 拍照读取相册:功能比较简单。看了下社区的这个后,后面每次就先看看社区有没有比较好的,而不是自己写了(个人项目)。
- ...