An open API service indexing awesome lists of open source software.

https://github.com/un-pany/flutter-template-plus

❄️ A flutter template, 可插拔的 flutter 项目模板
https://github.com/un-pany/flutter-template-plus

android dart dio flutter flutter-app flutter-examples flutter-template flutter-widget provider

Last synced: 2 months ago
JSON representation

❄️ A flutter template, 可插拔的 flutter 项目模板

Awesome Lists containing this project

README

        

## 简介

一个 APP 项目通用模板,提供 HTTP、路由、本地缓存等常用功能的一方库

## 效果图

![login_light.jpg](assets/images/docs/login_light.jpg)
![login_dark.jpg](assets/images/docs/login_dark.jpg)

## 功能

```text
- 身份认证
- 登录
- 登出

- HTTP
- 基于三方库 Dio 封装一方库 MyNet
- 响应拦截

- 路由
- 封装 Navigator 2.0
- 路由拦截

- 状态管理
- 基于三方库 provider
- 黑暗模式

- 本地缓存
- 基于三方库 shared_preferences 封装一方库 MyCache

- 其他
- 项目预初始化
- 两次返回确认
```

## 目录结构

```
# flutter_template_plus
├─ assets # 静态资源
│ ├─ icons # 字体图标
│ ├─ images # 图片
│ ├─ jsons # json 文件
├─ lib
│ ├─ common # 全局公共类、方法、变量等
│ ├─ db # 本地缓存
│ ├─ http # http 层
│ │ ├─ adapter # 适配器
│ │ ├─ core # 一方库
│ │ ├─ dao # 数据访问层
│ │ └─ request # 请求
│ ├─ models # model 层
│ ├─ navigator # Navigator 2.0
│ ├─ pages # 所有页面
│ ├─ provider # 状态管理
│ ├─ utils # 工具类
├─ └─ main.dart # 入口
└─ pubspec.yaml # 包管理
```

## 开发

```bash
# 安装依赖
flutter packages get 或 flutter pub get

# 分析代码
flutter analyze

# 运行项目
flutter run

# 如果遇到着色器渲染错误(Shader compilation error),可以运行 clean 后再 run
flutter clean

# 安卓真机调试
flutter devices
flutter run

# 安卓打包
flutter build apk
```

## 开发环境

1. Flutter version 2.8.0
2. Dart version 2.15.0
3. Android SDK version 31.0.0

## 开发工具

1. 编辑器 Visual Studio Code
2. 插件 Dart
3. 插件 Flutter
4. 插件 Flutter Widget Snippets

## Git 提交规范

- `feat` 增加新功能
- `fix` 修复问题/BUG
- `style` 代码风格相关无影响运行结果的
- `perf` 优化/性能提升
- `refactor` 重构
- `revert` 撤销修改
- `test` 测试相关
- `docs` 文档/注释
- `chore` 依赖更新/脚手架配置修改等
- `workflow` 工作流改进
- `ci` 持续集成
- `types` 类型定义文件更改
- `wip` 开发中
- `mod` 不确定分类的修改

## ❓ 关于 JSON 转 Dart Model 类

1. 纯手写实体类(不推荐)
2. **用网页自动生成工具: 根据 JSON 自动生成实体类,并 copy 到项目中(所有项目都通用)**
3. 使用插件 json_serializable(更适合大型项目)

**该脚手架采用第二种方案**

这里随便提供一个自动生成的网址:[json_to_dart](https://javiercbk.github.io/json_to_dart/)

*JSON <——> Map <——> Dart Model 三者之间的转化是常用的技巧*

## ❓ 关于路由

1. 官方的 Navigator 1.0
2. **官方的 Navigator 2.0 (Flutter 1.22 推出)**
3. 三方插件 fluro

**该脚手架采用第二种方案,并对其封装**

*Navigator 2.0 的概念有一定的难度*

## ❓ 关于 flutter_template_plus 和 flutter_template_mini 和 flutter-bruno-getx

1. mini 版的路由采用 Navigator 1.0,逻辑简单易懂,而 plus 版则采用更加强大,但难以理解的 Navigator 2.0
2. mini 版的 HTTP 层直接基于 Dio 进行封装,代码结构清晰简单,而 plus 版则书写一方库 MyNet,通过适配器集成 Dio,更加灵活、可插拔
3. mini 版的 db 层直接基于 shared_preferences 进行封装,而 plus 版则基于 shared_preferences 书写一方库 MyCache
4. mini 版的封装方式更贴近现代**前端工程**,而 plus 版则更加**面向对象**
5. flutter-bruno-getx 则完全基于 mini 版,并采用了最新的 SDK、Bruno UI 框架、GetX 状态管理器

## 不同版本

1. [flutter_template_plus](https://github.com/un-pany/flutter-template-plus)
2. [flutter_template_mini](https://github.com/un-pany/flutter-template-mini)
3. [flutter-bruno-getx](https://github.com/un-pany/flutter-bruno-getx)

## 📚 入门 Flutter 系列文章

1. [Flutter 从 0 到 1](https://juejin.cn/column/6995160230476644366)
2. [移动端学习小记](https://juejin.cn/column/6991310785871872007)

## 📄 License

[MIT](https://github.com/un-pany/flutter-template-plus/blob/main/LICENSE)

Copyright (c) 2021 UNPany