主流常用第三方庫

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ā)布。

  1. 推薦優(yōu)質學習資源
    Flutter官方文檔:永遠是最好的學習資源,包含了最權威、最全面的信息。
    Flutter Cookbook:提供了大量常見問題的解決方案和代碼示例。
    Dart官方文檔:深入理解Dart語言的特性。
    pub.dev:Flutter和Dart包的官方倉庫,查找和學習第三方庫的用法。

一、Flutter學習資料

二、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

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容