1.2 项目开发流程
需求分析与设计:明确项目目标、功能模块、用户界面。
技术选型:确定状态管理方案、网络请求库、数据存储方式等。
项目初始化:创建Flutter项目,配置基本结构。
模块开发:分模块实现功能,逐步集成。
测试与调试:单元测试、Widget测试、集成测试,修复bug。
性能优化:根据DevTools分析结果进行优化。
打包与发布:准备发布材料,生成安装包。
2.1 深入理解Flutter原理
渲染机制:深入了解Flutter的渲染管线,包括Widget、Element、RenderObject三棵树的工作原理,以及如何进行UI的构建、布局和绘制。
Engine层:了解Flutter Engine(Skia、Dart VM、Text rendering等)的工作方式,以及它如何与平台原生代码交互。
平台通道 (Platform Channels):更深入地学习如何编写和使用Platform Channels,实现Flutter与原生代码(Kotlin/Java for Android, Swift/Objective-C for iOS)之间的双向通信。
2.2 状态管理深入
掌握多种状态管理方案:除了Provider,还可以学习其他流行的状态管理方案,如:
Riverpod:Provider的改进版,提供了编译时安全和更灵活的依赖注入。
BLoC/Cubit:基于事件和状态流的模式,适合复杂业务逻辑和大型应用。
GetX:轻量级、高性能的解决方案,集成了状态管理、路由管理、依赖注入等。
MobX:基于响应式编程的解决方案。
选择适合项目的方案:理解不同方案的优缺点和适用场景,以便在实际项目中做出明智的选择。
2.3 架构设计与模式
分层架构:学习如何将应用划分为不同的层(如UI层、业务逻辑层、数据层),提高代码的可维护性和可测试性。
设计模式:在Flutter开发中应用常见的设计模式,如工厂模式、单例模式、观察者模式等。
Clean Architecture / Domain-Driven Design:对于大型复杂应用,可以考虑引入更高级的架构模式,如Clean Architecture或DDD。
2.4 测试策略
单元测试 (Unit Testing):测试独立的函数、类或业务逻辑。
Widget测试 (Widget Testing):测试单个Widget或Widget树的UI和交互。
集成测试 (Integration Testing):测试应用的不同部分如何协同工作,模拟用户真实操作。
自动化测试:学习如何使用flutter_driver或Patrol进行UI自动化测试。
2.5 性能优化与调试进阶
深入DevTools:熟练使用DevTools的各个功能,进行更细致的性能分析和内存调试。
渲染性能优化:理解RepaintBoundary、ShaderMask等高级Widget的优化作用。
内存管理:避免内存泄漏,优化图片和资源加载。
2.6 跨平台与多端适配
Web支持:学习如何将Flutter应用部署到Web平台,并进行Web特有的优化。
桌面端支持:了解Flutter桌面应用开发,包括桌面端特有的UI/UX设计和功能实现。
响应式布局:掌握如何构建能够适应不同屏幕尺寸和方向的响应式UI。
2.7 生态系统与工具
常用插件:探索更多有用的第三方插件,如地图、支付、推送等。
Firebase/Backend as a Service (BaaS):学习如何将Flutter应用与Firebase等后端服务集成,快速实现用户认证、数据库、云存储等功能。
CI/CD:学习如何设置持续集成/持续部署流程,自动化应用的构建、测试和发布。
- 推荐优质学习资源
Flutter官方文档:永远是最好的学习资源,包含了最权威、最全面的信息。
Flutter Cookbook:提供了大量常见问题的解决方案和代码示例。
Dart官方文档:深入理解Dart语言的特性。
pub.dev:Flutter和Dart包的官方仓库,查找和学习第三方库的用法。
一、Flutter学习资料
- Flutter
- Flutter官网
- Flutter中文网
- 咸鱼技术
- 掘金Flutter专栏
- Flutter 官网: flutter.dev/
- Flutter 插件下载地址: pub.dev/packages
- Flutter 开发文档: flutter.cn/docs (强烈推荐)
- 官方GitHub地址: github.com/flutter
- Flutter 中文社区: flutter.cn/
- Flutter 实用教程: flutter.cn/docs/cookbo…
- Flutter CodeLab: codelabs.flutter-io.cn/
- Dart 中文文档: dart.cn/
- Dart 开发者官网: api.dart.dev/
- Flutter 中文网 (非官方, 翻译的很好): flutterchina.club/
二、iOS开发辅助工具
对于Flutter开发者来说,发布应用到App Store是一个重要环节。AppUploader是一款专业的iOS开发助手工具,可以帮助开发者:
- 简化iOS证书和描述文件管理流程
- 一键上传IPA到App Store Connect
- 支持批量处理多设备UDID
- 提供详细的错误诊断信息
AppUploader特别适合Flutter开发者使用,因为它能自动处理与原生平台相关的复杂配置问题,让开发者更专注于Flutter应用开发本身。
三、三方框架库
1、网络库
dio
- 网络请求
- dio: ^3.0.9
- 一个强大的Dart Http请求库,支持Restful API、FormData、拦截器、请求取消、Cookie管理、文件上传/下载、超时、自定义适配器等...
http
- 网络请求
- http: ^0.12.0+2
connectivity
- 监听网络状态
- connectivity: ^0.4.3+6
cookie_jar
- cookie持久化
- cookie_jar: ^1.0.0
flutter_downloader
- 服务端下载
2、UI库
fluttertoast
- Toast
- fluttertoast: ^3.1.0
flutter_swiper 或 carousel_slider
- (图片)轮播组件库 banner
- flutter_swiper: ^1.1.6
flutter_webview_plugin
- 加载webview网页
- flutter_webview_plugin: ^0.3.5
flutter_html
- 加载富文本
- flutter_html: ^0.11.0
flutter_markdown
- 加载markdown
- flutter_markdown: ^0.2.0
zefyr
- 富文本编辑器
- zefyr: ^0.8.0
badges
- 徽章
- badges: ^1.1.0
fl_chart
- 图表
- fl_chart: ^0.1.5
city_picker 或 city_pickers
- 城市选择器
- city_picker: ^0.1.3
azlistview
- 列表索引
- azlistview: ^0.1.2
file_picker
- 文件选择器
- file_picker: ^1.3.8
flutter_calendar_carousel 或 table_calendar
- 日历
- flutter_calendar_carousel: ^1.3.18
date_range_picker
- 日期区间选择器
- date_range_picker: ^1.0.6
flukit
- Flutter UI组件库
- flukit: ^1.0.2
city_pickers
- Flutter 省市区选择器
flutter_datetime_picker
- 时间日期
jiffy
- 日期格式化相关
3、加载指示器库
flutter_spinkit
- 动画库-加载指示器
- flutter_spinkit: ^3.1.0
flutter_easyloading
- 弹框加载中等待
loading_indicator 、loading_animations
- 加载指示器
adaptive_dialog、giffy_dialog
- 弹框提示
bot_toast、toast、fluttertoast、oktoast、flutter_styled_toast
- 吐司弹框提示
popover
- 提示
flutter_update_dialog
- 更新app弹框
4、数据库
sqflite
- 数据库
- sqflite: ^1.1.6
shared_preferences
- sp本地存储
- shared_preferences: ^0.5.3+4
- 简单的,异步的,持久化的key-value存储系统,在Android上它是基于SharedPreferences的,在iOS上它是基于NSUserDefaults
5、设备库
share
- 分享
- share: ^0.6.2+1
camera
- 相机
- camera: ^0.5.2+2
device_info 、url_launcher
- 设备信息,系统库(app相关信息、打电话、发邮件等)
- device_info: ^0.4.0+2
package_info
- 包信息
- package_info : ^0.4.0+6
path_provider
- 获取本地文件路径
- path_provider: ^1.2.0
flutter_keyboard_visibility、keyboard_utils
- 获取键盘相关
6、工具库
rxdart
- 函数式编程
- rxdart: ^0.22.1+1
event_bus
- 消息传递
- event_bus: ^1.1.0
event_bus、scoped_model
- 事件传递(跨组件传递数据)
url_launcher
- 打开链接
- url_launcher: ^5.1.2
intl
- 国际化
- intl: ^0.15.8
video_player
- 视频播放器
- video_player: ^0.10.1+6
audioplayers
- 音频播放器
- audioplayers: ^0.13.1
7、动画库
flutter_spinkit
支持各种动画,可用来做加载动画等
sn_progress_dialog
- 进度条
flutter_slidable
- 列表左右滑弹出按钮
sliding_up_panel、modal_bottom_sheet
- 底部弹出框
custom_navigation_bar、convex_bottom_bar (推荐)、curved_navigation_bar、persistent_bottom_nav_bar、animated_bottom_navigation、animated_bottom_navigation_bar
- 底部弹出框
flutter_animator、flutter_staggered_animations、animations、simple_animations、lottie
- 动画库
wave
- 波浪纹
implicitly_animated_reorderable_list
- 列表拖动
circular_menu
- 旋转菜单
draggable_scrollbar
- 自定义滚动条
flutter_slider_drawer、collapsible_sidebar
- 侧边栏
8、条形码-二维码扫描
barcode_scan
支持iOS、android两端的条码-二维码扫描库
qr_flutter
- 二维码
- qr_flutter: ^2.1.0+55
qrscan
- 扫描
9、下拉加载上拉加载更多
pull_to_refresh
很强大的一个库,可以实现多种效果,强烈建议
loadmore
ListView上拉加载更多,挺好用的
flutter_easyrefresh
- 下拉刷新上拉加载
- flutter_easyrefresh: ^2.0.0
liquid_pull_to_refresh
- 下拉刷新加载
infinite_scroll_pagination
- 上拉加载刷新
10、版本更新
ota_update
支持Android应用内下载,实现应用内更新功能
url_launcher
网页打开工具,适用于iOS版本更新,可以打开应用地址,跳转AppStore更新
permission_handle upgrader app升级
11、权限
permission_handle
权限管理,可用来检测权限是否获取等
simple_permissions
- 权限相关
- simple_permissions: ^0.1.9
permission_handler
- 权限管理相关
flutter_cache_manager
- 文件缓存管理
open_file
- 打开文件
12、视频封面图获取
video_thumbnail
可以获取本地和网络视频的封面图
- socket_io_client
io流 - video_compress_ds
视频压缩
13、状态、路由管理
getx
GetX 是 Flutter 上的一个轻量且强大的解决方案:高性能的状态管理、智能的依赖注入和便捷的路由管理。
provide
- 状态管理
- provide: ^1.0.2
provider
- 状态管理
- provider: ^3.0.0+1
fluro 或 auto_route
- 页面路由
- fluro: ^1.5.1
14、图片相关
image_picker 或 multi_image_picker2、flutter_wechat_assets_picker(推荐:防wx)
- 图片选择器
- image_picker: ^0.6.1
cached_network_image
- 图片缓存
- cached_network_image: ^1.1.1
photo_view
- 图片手势, 图片预览
- photo_view: ^0.4.2
font_awesome_flutter
- 图标库
- font_awesome_flutter: ^8.5.0
image_gallery_saver
- 保存图片至本机
device_preview
- 真机预览
image_cropper
- 图片裁剪
flutter_luban
- 图片压缩
15、三方SDK
fluwx
- 微信SDK相关
flutter_bmflocation
- 百度定位插件
flutter_baidu_mapapi_map
- 百度地图基础地图插件
amap_flutter_location
- 高德地图定位插件
amap_flutter_map
- 高德地图基础地图插件
16、其它
flutter_native_splash、introduction_screen、intro_slider、animated_splash
- 启动屏
flutter_screenutil
- 屏幕适配方案
badges
- 角标、标记
flutter_colorpicker
- 取拾器
pin_code_fields
- 验证码输入
flutter_rating_bar、smooth_star_rating
- 评分评价
flutter_blurhash
- 高斯模糊
like_button
- 动态按钮(点赞收藏)
flutter_app_badger
- app数字角标
flutter_custom_clippers
- 组件裁剪
readmore
- 读取更多内容
常用库
屏幕适配flutter_screenutil
加载 svg flutter_svg
状态管理 flutter_bloc(bloc、equatable)、provider
视频播放器chewie
图片缓存cached_network_image
网络请求 dio
设备信息查询device_info_plus
文件路径 path_provider
包信息 package_info_plus
简单数据存储shared_preferences、encrypted_shared_preferences(加密)
toast fluttertoast
图片选择器image_picker
文件选择器 file_picker
json 动画lottie
log 日志logger
下拉刷新上拉加载pull_to_refresh
webview webview_flutter_plus
系统设置app_settings
网络状态connectivity_plus
代理 http_proxy
路由 go_router、fluro
图片压缩 flutter_image_compress
骨架动画 skeletonizer
代码自动生成build、build_config、source_gen
in app webview flutter_inappwebview
权限管理 permission_handler
与native相互通讯 pigeon
分享 share_plus
uuid uuid
打开第三方应用 url_launcher
splash flutter_native_splash
图表 fl_chart
二维码 mobile_scanner
加密 crypto
Android垃圾代码生成插件
https://github.com/qq549631030/AndroidJunkCode