1.2 項目開發(fā)流程
需求分析與設計:明確項目目標、功能模塊、用戶界面。
技術選型:確定狀態(tài)管理方案、網絡請求庫、數據存儲方式等。
項目初始化:創(chuàng)建Flutter項目,配置基本結構。
模塊開發(fā):分模塊實現功能,逐步集成。
測試與調試:單元測試、Widget測試、集成測試,修復bug。
性能優(yōu)化:根據DevTools分析結果進行優(yōu)化。
打包與發(fā)布:準備發(fā)布材料,生成安裝包。
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 狀態(tài)管理深入
掌握多種狀態(tài)管理方案:除了Provider,還可以學習其他流行的狀態(tài)管理方案,如:
Riverpod:Provider的改進版,提供了編譯時安全和更靈活的依賴注入。
BLoC/Cubit:基于事件和狀態(tài)流的模式,適合復雜業(yè)務邏輯和大型應用。
GetX:輕量級、高性能的解決方案,集成了狀態(tài)管理、路由管理、依賴注入等。
MobX:基于響應式編程的解決方案。
選擇適合項目的方案:理解不同方案的優(yōu)缺點和適用場景,以便在實際項目中做出明智的選擇。
2.3 架構設計與模式
分層架構:學習如何將應用劃分為不同的層(如UI層、業(yè)務邏輯層、數據層),提高代碼的可維護性和可測試性。
設計模式:在Flutter開發(fā)中應用常見的設計模式,如工廠模式、單例模式、觀察者模式等。
Clean Architecture / Domain-Driven Design:對于大型復雜應用,可以考慮引入更高級的架構模式,如Clean Architecture或DDD。
2.4 測試策略
單元測試 (Unit Testing):測試獨立的函數、類或業(yè)務邏輯。
Widget測試 (Widget Testing):測試單個Widget或Widget樹的UI和交互。
集成測試 (Integration Testing):測試應用的不同部分如何協(xié)同工作,模擬用戶真實操作。
自動化測試:學習如何使用flutter_driver或Patrol進行UI自動化測試。
2.5 性能優(yōu)化與調試進階
深入DevTools:熟練使用DevTools的各個功能,進行更細致的性能分析和內存調試。
渲染性能優(yōu)化:理解RepaintBoundary、ShaderMask等高級Widget的優(yōu)化作用。
內存管理:避免內存泄漏,優(yōu)化圖片和資源加載。
2.6 跨平臺與多端適配
Web支持:學習如何將Flutter應用部署到Web平臺,并進行Web特有的優(yōu)化。
桌面端支持:了解Flutter桌面應用開發(fā),包括桌面端特有的UI/UX設計和功能實現。
響應式布局:掌握如何構建能夠適應不同屏幕尺寸和方向的響應式UI。
2.7 生態(tài)系統(tǒng)與工具
常用插件:探索更多有用的第三方插件,如地圖、支付、推送等。
Firebase/Backend as a Service (BaaS):學習如何將Flutter應用與Firebase等后端服務集成,快速實現用戶認證、數據庫、云存儲等功能。
CI/CD:學習如何設置持續(xù)集成/持續(xù)部署流程,自動化應用的構建、測試和發(fā)布。
- 推薦優(yōu)質學習資源
Flutter官方文檔:永遠是最好的學習資源,包含了最權威、最全面的信息。
Flutter Cookbook:提供了大量常見問題的解決方案和代碼示例。
Dart官方文檔:深入理解Dart語言的特性。
pub.dev:Flutter和Dart包的官方倉庫,查找和學習第三方庫的用法。
一、Flutter學習資料
- Flutter
- Flutter官網
- Flutter中文網
- 咸魚技術
- 掘金Flutter專欄
- Flutter 官網: flutter.dev/
- Flutter 插件下載地址: pub.dev/packages
- Flutter 開發(fā)文檔: flutter.cn/docs (強烈推薦)
- 官方GitHub地址: github.com/flutter
- Flutter 中文社區(qū): flutter.cn/
- Flutter 實用教程: flutter.cn/docs/cookbo…
- Flutter CodeLab: codelabs.flutter-io.cn/
- Dart 中文文檔: dart.cn/
- Dart 開發(fā)者官網: api.dart.dev/
- Flutter 中文網 (非官方, 翻譯的很好): flutterchina.club/
二、iOS開發(fā)輔助工具
對于Flutter開發(fā)者來說,發(fā)布應用到App Store是一個重要環(huán)節(jié)。AppUploader是一款專業(yè)的iOS開發(fā)助手工具,可以幫助開發(fā)者:
- 簡化iOS證書和描述文件管理流程
- 一鍵上傳IPA到App Store Connect
- 支持批量處理多設備UDID
- 提供詳細的錯誤診斷信息
AppUploader特別適合Flutter開發(fā)者使用,因為它能自動處理與原生平臺相關的復雜配置問題,讓開發(fā)者更專注于Flutter應用開發(fā)本身。
三、三方框架庫
1、網絡庫
dio
- 網絡請求
- dio: ^3.0.9
- 一個強大的Dart Http請求庫,支持Restful API、FormData、攔截器、請求取消、Cookie管理、文件上傳/下載、超時、自定義適配器等...
http
- 網絡請求
- http: ^0.12.0+2
connectivity
- 監(jiān)聽網絡狀態(tài)
- 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
- 日期區(qū)間選擇器
- date_range_picker: ^1.0.6
flukit
- Flutter UI組件庫
- flukit: ^1.0.2
city_pickers
- Flutter 省市區(qū)選擇器
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存儲系統(tǒng),在Android上它是基于SharedPreferences的,在iOS上它是基于NSUserDefaults
5、設備庫
share
- 分享
- share: ^0.6.2+1
camera
- 相機
- camera: ^0.5.2+2
device_info 、url_launcher
- 設備信息,系統(tǒng)庫(app相關信息、打電話、發(fā)郵件等)
- 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、狀態(tài)、路由管理
getx
GetX 是 Flutter 上的一個輕量且強大的解決方案:高性能的狀態(tài)管理、智能的依賴注入和便捷的路由管理。
provide
- 狀態(tài)管理
- provide: ^1.0.2
provider
- 狀態(tài)管理
- 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
- 動態(tài)按鈕(點贊收藏)
flutter_app_badger
- app數字角標
flutter_custom_clippers
- 組件裁剪
readmore
- 讀取更多內容
常用庫
屏幕適配flutter_screenutil
加載 svg flutter_svg
狀態(tài)管理 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
系統(tǒng)設置app_settings
網絡狀態(tài)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