asd12l / lighthouse_flutter

flutter 练手项目,组件化,mvvm,热更新,dio,websocket,多语言,多渠道打包,K线图,分时图,Componentization,kline,timeline

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

lighthouse info

实现内容

  • 基于provider 的mvvm模式做状态管理
  • 组件化,组件化的路由管理,各个组件可单独运行
  • 基于dio 的请求封装
  • 基于web_socket_channel 的websocket封装,支持重连
  • 用户、密码、验证码输入框封装
  • 完整的登录逻辑
  • 本地化
  • 下拉刷新 + 上拉加载更多
  • NestedScrollView + TabView联动
  • 曲线图、饼状图、柱状图、热力图
  • K线图、分时图
  • 截图功能,长页面截图,webview截图
  • 长文章页面
  • 微信分享,保存本地图片分享
  • 基于bugly的应用全量更新
  • 基于bugly + tinker的热更新
  • 基于walle的多渠道打包
  • 代码迁移至nullsafety
  • 全平台适配,Web、Android、iOS、Windows、macos

在线Demo

http://www.jerryplay.top/lighthouse

备注:部分三方库不支持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.3.7
 
2. Dart version 2.18.4

注意事项

  • 渠道信息在 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目录

About

flutter 练手项目,组件化,mvvm,热更新,dio,websocket,多语言,多渠道打包,K线图,分时图,Componentization,kline,timeline


Languages

Language:Dart 99.2%Language:Java 0.5%Language:HTML 0.2%Language:Ruby 0.1%Language:Objective-C 0.0%Language:Kotlin 0.0%