- 基于
provider
的mvvm模式做状态管理 - 组件化,组件化的路由管理,各个组件可单独运行
- 基于
dio
的请求封装 - 基于
web_socket_channel
的websocket封装,支持重连 - 用户、密码、验证码输入框封装
- 完整的登录逻辑
- 本地化
- 下拉刷新 + 上拉加载更多
- NestedScrollView + TabView联动
- 曲线图、饼状图、柱状图、热力图
- K线图、分时图
- 截图功能,长页面截图,webview截图
- 长文章页面
- 微信分享,保存本地图片分享
- 基于bugly的应用全量更新
- 基于bugly + tinker的热更新
- 基于walle的多渠道打包
- 代码迁移至nullsafety
- 全平台适配,Web、Android、iOS、Windows、macos
备注:部分三方库不支持Web、Desktop平台,如微信、bugly、webview等,因此Web、Desktop端相关功能暂时缺失
库 | 功能 |
---|---|
shared_preferences | SP |
date_format | 日期格式化 |
event_bus | event_bus |
path_provider | 本地存储路径 |
package_info | package信息 |
permission_handler | 权限管理 |
encrypt | 加密库 |
pull_to_refresh | 下拉刷新上拉加载 |
extended_nested_scroll_view | 扩展NestedScrollView |
flutter_spinkit | loading动画 |
decimal | 小数计算 |
web_socket_channel | websocket插件 |
dio | 网络库 |
provider | 状态管理 |
cached_network_image | 图片加载 |
fluro | 路由管理 |
flutter_oktoast | Toast |
flutter_carousel_slider | Flutter 轮播组件 |
url_launcher | 启动URL的插件 |
image_picker | 图片选择插件 |
image_cropper | 图片裁剪 |
image_gallery_saver | 图片保存至相册 |
photo_view | 图片手势缩放(看大图) |
flutter_inappwebview | 更强大的webview插件 |
webview_flutter | WebView插件 |
keyboard_actions | 处理键盘事件 |
sticky_headers | 列表悬浮头 |
lpinyin | 汉字转拼音 |
fl_chart | 图表库 |
flutter_echarts | 基于echart的图表库 |
qr_flutter | 二维码 |
intl | 本地化 |
umeng_analytics_plugin | 友盟统计 |
bugly | bugly |
share | 分享插件 |
fluwx | 微信SDK插件 |
flutter_xupdate | app更新 |
jpush_flutter | 极光推送 |
uni_links | uni_links |
1. Flutter version 3.0.0
2. Dart version 2.17.0
-
渠道信息在 android\app\channel 文件中配置
-
多渠道打包,android工程下执行命令行 gradlew clean assembleReleaseChannels,文件生成在build\app\outputs\channels 目录
-
单独打某些渠道包,android工程下执行命令行 gradlew clean assembleReleaseChannels -PchannelList=official,google,文件生成在build\app\outputs\channels 目录
-
热更新开启时,使用 assembleReleaseChannels 命令也会打出基准包,文件生成在build\app\outputs\channels目录
-
测试环境包采用默认参数 -Ptarget=lib/main.dart,生产环境包设置参数 -Ptarget=lib/main_prod.dart
-
tinker-support.gradle 中设置 enable = true,tinkerEnable = true
-
打基准包,android工程下执行gradle->app->Tasks->other->assembleRelease,文件生成在build\app\outputs\channels目录
-
打补丁包,将 build\app\outputs\channels 目录中的文件夹名称拷贝到 tinker-support.gradle 的 baseApkDir 中,执行gradle->app->Tasks->tinker-support->buildTinkerPatchRelease,补丁文件生成在build\app\outputs\patch目录