|
| 1 | +# flutter-common-widgets-app |
| 2 | + |
| 3 | +### 使用背景 |
| 4 | +* 鉴于目前flutter官方庞大的小部件(widget)系统以及api文档,只有文字描述,而没有可视化实例。 |
| 5 | +* 我们开发这套app,可以系统的看到常用小部件(widget)的用法。 |
| 6 | +* 辅助初学者更快上手,flutter官方小部件(widget) |
| 7 | + |
| 8 | + |
| 9 | + |
| 10 | +### 参考资料 |
| 11 | + |
| 12 | +* [flutter-widgets的官方库地址]( https://docs.flutter.kim/widgets/widgets-library.html ) |
| 13 | +* [flutter-widgets的官方目录集]( http://doc.flutter-dev.cn/widgets/ ) |
| 14 | +* [sqlitestudio 本地可视化工具] (https://sqlitestudio.pl/index.rvt) |
| 15 | + |
| 16 | +### 分支命名及使用规范 |
| 17 | + |
| 18 | +* 分支命名规范 |
| 19 | + - 自己开发分支命名统一为 username ,如:yifeng |
| 20 | + - 分支两条主线为 Master分支和develop分支 |
| 21 | + - Master作为发布分支,develop作为开发测试分支、自己开发分支从dev checkout出去,发布即 merge to master |
| 22 | + |
| 23 | +* 分支合并规范 |
| 24 | + - 从最新的develop分支checkout出自己的开发分支 |
| 25 | + - 在自己开发开发分支开发完成后,先去develop分支pull最新代码, |
| 26 | + - 将develop 分支最新代码 merge 到自己分支,确保无冲突 |
| 27 | + - 再切回develop分支merge自己开发分支代码,确保无冲突,且能正常运行 |
| 28 | + |
| 29 | +### commit 提交规范 |
| 30 | +* $git cz |
| 31 | + |
| 32 | +* 用于说明 commit 的类别,只允许使用下面7个标识。 |
| 33 | + |
| 34 | + - feat:新功能(feature) |
| 35 | + |
| 36 | + - fix:修补bug |
| 37 | + |
| 38 | + - docs:文档(documentation) |
| 39 | + |
| 40 | + - style: 格式(不影响代码运行的变动) |
| 41 | + |
| 42 | + - refactor:重构(即不是新增功能,也不是修改bug的代码变动) |
| 43 | + |
| 44 | + - test:增加测试 |
| 45 | + |
| 46 | + - chore:构建过程或辅助工具的变动 |
| 47 | + |
| 48 | + |
| 49 | +### 代码规范 |
| 50 | +* 文件命名规范 |
| 51 | + - 文件命名使用下划线命名法,如:hello_world |
| 52 | + - 请使用英文进行命名,不允许使用拼音。命名要求具有可读性,尽量避免使用缩写与数字 |
| 53 | + - 未完待续 |
| 54 | + |
| 55 | +* 代码编码规范 |
| 56 | + - 文件编码统一使用 UTF-8 编码; |
| 57 | + - 前端编码采用首字母小写驼峰法. Widget Class 必须采用首字母大写驼峰法. |
| 58 | + |
| 59 | +### 文件目录结构(以LIb文件说明) |
| 60 | + |
| 61 | +- lib |
| 62 | + - main.dart 入口文件 |
| 63 | + - common 公共的method |
| 64 | + - components widget |
| 65 | + - generated |
| 66 | + - model 存放模型, 不应该加入逻辑层 |
| 67 | + - router 路由 |
| 68 | + - views 展示界面 |
| 69 | + - widget (与components概念重合,废弃) |
| 70 | + |
| 71 | +``` javascript |
| 72 | +├── main.dart //入口文件 |
| 73 | +├── common 公共的method |
| 74 | +│ ├── Style.dart |
| 75 | +│ ├── eventBus.dart |
| 76 | +│ ├── provider.dart |
| 77 | +│ └── sql.dart |
| 78 | +├── components //app展示框架用到的组件 |
| 79 | +│ ├── Input.dart |
| 80 | +│ ├── List.dart |
| 81 | +│ ├── Pagination.dart |
| 82 | +│ ├── Pagination2.dart |
| 83 | +│ ├── SearchInput.dart |
| 84 | +│ └── homeBanner.dart |
| 85 | +├── generated |
| 86 | +│ └── i18n.dart |
| 87 | +├── model //本地存放模型, 不应该加入逻辑层 |
| 88 | +│ ├── base.dart |
| 89 | +│ ├── cat.dart |
| 90 | +│ ├── story.dart |
| 91 | +│ └── widget.dart |
| 92 | +├── routers //路由 |
| 93 | +│ ├── application.dart |
| 94 | +│ ├── router_handler.dart |
| 95 | +│ └── routers.dart |
| 96 | +├── views //app展示界面 |
| 97 | +│ ├── Detail.dart |
| 98 | +│ ├── FirstPage.dart |
| 99 | +│ ├── FourthPage.dart |
| 100 | +│ ├── ThirdPage.dart |
| 101 | +│ ├── category.dart |
| 102 | +│ ├── demos |
| 103 | +│ │ ├── home.dart |
| 104 | +│ │ └── layout |
| 105 | +│ │ ├── SamplePage.dart |
| 106 | +│ │ └── layout_type.dart |
| 107 | +│ └── widgetPage.dart |
| 108 | +└── widgets |
| 109 | + └── ... //下面详细说明 |
| 110 | +``` |
| 111 | + |
| 112 | +``` javascript |
| 113 | +└── widgets // 对flutter所有元素和组件的分类 |
| 114 | + ├── 404.dart |
| 115 | + ├── index.dart // widgets 的总入口文件 |
| 116 | + ├── components // 组件的分类 (区别于上面的components) |
| 117 | + │ └── index.dart |
| 118 | + ├── elements // 基础元素的分类 |
| 119 | + │ ├── index.dart // elements下的 elements 类型入口文件 |
| 120 | + │ ├── Form // elements下的 From 类型集合 |
| 121 | + │ │ ├── Button // button 元素,里面是 文件夹代表类名/index.dart |
| 122 | + │ │ │ ├── FlatButton |
| 123 | + │ │ │ │ └── index.dart |
| 124 | + │ │ │ ├── RaisedButton |
| 125 | + │ │ │ │ └── index.dart |
| 126 | + │ │ │ └── index.dart |
| 127 | + │ │ ├── CheckBox |
| 128 | + │ │ ├── Input |
| 129 | + │ │ ├── Radio |
| 130 | + │ │ ├── Slider |
| 131 | + │ │ ├── Switch |
| 132 | + │ │ ├── Text |
| 133 | + │ │ └── index.dart |
| 134 | + │ ├── Frame // elements下的 Frame 类型集合 |
| 135 | + │ │ ├── Align |
| 136 | + │ │ ├── Axis |
| 137 | + │ │ ├── Box |
| 138 | + │ │ ├── Expanded |
| 139 | + │ │ ├── Layout |
| 140 | + │ │ ├── Stack |
| 141 | + │ │ ├── Table |
| 142 | + │ │ └── spacing |
| 143 | + │ └── Media // elements下的 Media 类型集合 |
| 144 | + │ ├── Canvas |
| 145 | + │ ├── Icon |
| 146 | + │ └── Image |
| 147 | + └── themes |
| 148 | + └── index.dart |
| 149 | +``` |
| 150 | + |
| 151 | +```javascript |
| 152 | +widget 里的文件结构,用来存放封装的逻辑组件, 文件目录应为, 类比rax |
| 153 | +- widget // widget 下详细元素或组件的目录结构 |
| 154 | + - hello-world // 例如 |
| 155 | + - mods // (可选, 子模块) |
| 156 | + - mocks // (可选) |
| 157 | + - utils // (可选, 存放暂时的私有method) |
| 158 | + - schema |
| 159 | + - index.dart |
| 160 | +``` |
0 commit comments