Flutter项目结构


介绍

下面是本人自己写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,且内部的State必须继承自BaseState
    父类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插件。
  • 权限请求:好像有出来权限请求框架,还没来得及测试。就直接用来自己的。
  • 拍照读取相册:功能比较简单。看了下社区的这个后,后面每次就先看看社区有没有比较好的,而不是自己写了(个人项目)。
  • ...

你可能感兴趣的:(Flutter项目结构)