Flutter使用心得(基礎(chǔ)篇)

鄙人iOS開發(fā)攻城獅一枚欲诺,因公司發(fā)展需求抄谐,2019年7月開始自學(xué)Flutter,于2019年11月學(xué)成并開發(fā)一款類似百度云盤APP并上架AppStore和GooglePay扰法,開發(fā)期間的辛酸和痛苦只有自己知道蛹含,總體來說,痛并快樂著塞颁,以下是使用Flutter開發(fā)的一些基礎(chǔ)心得浦箱,分享給即將步入Flutter坑的攻城獅們。

基礎(chǔ)概念介紹:
Flutter 是 Google推出并開源的移動應(yīng)用開發(fā)框架祠锣,主打跨平臺酷窥、高保真、高性能伴网。開發(fā)者可以通過 Dart語言開發(fā) App蓬推,一套代碼同時運行在 iOS 和 Android平臺。 Flutter提供了豐富的組件澡腾、接口沸伏,開發(fā)者可以很快地為 Flutter添加 native擴展。同時 Flutter還使用 Native引擎渲染視圖动分,這無疑能為用戶提供良好的體驗

Flutter是谷歌的移動UI框架毅糟,可以快速在iOS和Android上構(gòu)建高質(zhì)量的原生用戶界面。 Flutter可以與現(xiàn)有的代碼一起工作澜公。在全世界留特,F(xiàn)lutter正在被越來越多的開發(fā)者和組織使用,并且Flutter是完全免費玛瘸、開源的。2018年12月5日發(fā)布正式版本1.0苟蹈。

Flutter使用Dart語言開發(fā)糊渊,dart語言是由谷歌公司開發(fā)的網(wǎng)絡(luò)編程語言,于2011年10月10日發(fā)布一種面向?qū)ο蟮恼Z言慧脱,包含面向?qū)ο笳Z言的基本特征(繼承渺绒、封裝、多態(tài))菱鸥。

Flutter的核心宗旨宗兼,萬物皆Widget,相比較原生iOS/Android氮采,F(xiàn)lutter把所有對象全部看成Widget殷绍,比如基礎(chǔ)UI控件、手勢鹊漠、文本主到、圖片茶行、按鈕、動畫登钥、渲染等等

Flutter IDE:Android Studio / VSCode

項目常見問題:
針對問題:
1)flutter開發(fā)中常見功能的解決畔师,比如權(quán)限,導(dǎo)航牧牢,推送等等一般app開發(fā)中常用到的功能看锉。

1.權(quán)限問題,第三方插件
2.導(dǎo)航路由使用:1.簡單的路由類 2.命名路由 3.自定義路由
3.推送:iOS使用原生APNS通知塔鳍、Android使用FireBase推送
4.flutter的listview是不支持拖動排序的伯铣,需要支持列表拖動排序需要用ReorderableListView

2)碰到的問題以及如何解決的,比如推送過來點擊無法跳到通知詳細

1.在收到通知點擊跳轉(zhuǎn)詳情頁時献幔,沒有Context上下文對象懂傀,無法使用push跳轉(zhuǎn)至詳情頁
使用EventBus解決問題,新建Base類蜡感,Base監(jiān)聽接收通知蹬蚁,需要跳轉(zhuǎn)的頁面繼承Base

2.相冊圖片和視頻開始沒有在一個頁面內(nèi),是因為Flutter的插件太多郑兴,沒有選擇正確的插件使用

3.在列表有縮略圖的時候犀斋,使用State刷新整個頁面的時候,會有圖片閃爍的問題出現(xiàn)
使用GlobalKey情连,封裝想要刷新的控件叽粹,然后實現(xiàn)局部刷新

4.Flutter不支持操作本地文件的復(fù)制和粘貼功能
原生代碼實現(xiàn)功能,flutter通過channel調(diào)用原生方法實現(xiàn)

5.相冊插件的國際化語言問題
調(diào)用相冊的插件把頁面語言構(gòu)造寫死了却舀,如果想要實現(xiàn)插件中的國際化語言支持虫几,就得修改插件中的方法,可能存在每次更新插件挽拔,可能會導(dǎo)致修改部分失效

6.做兩個項目統(tǒng)合的時候辆脸,Android遇到分享欄里面存在兩個app問題?

7.切換本地語言后螃诅,調(diào)用api傳參時啡氢,語言對應(yīng)的參數(shù)變更問題?

8.本地圖片發(fā)生變化后术裸,刷新頁面無效果
需要重寫 本地圖片清除緩存并加載新圖倘是,判斷新圖片文件和舊圖片文件size是否一致

9.選擇插件一定要慎重,部分插件細節(jié)問題較難處理和修改
上傳相冊中斷網(wǎng)袭艺,調(diào)用隱藏loading搀崭,loading無法取消問題
進入下個頁面loading正在加載時,調(diào)用隱藏loading無效果
上傳多張圖片時猾编,插件內(nèi)部寫定單位為個门坷,想調(diào)整為進度條無法實現(xiàn)
調(diào)用隱藏按鈕角標時可能存在不隱藏狀況宣鄙,需重寫隱藏角標方法

10.本地文件,在Android的文件管理器中可以自行修改默蚌,會導(dǎo)致app內(nèi)本地文件丟失

3)相對于原生開發(fā)的優(yōu)缺點冻晤。

Flutter優(yōu)點:
    1.支持熱重載功能伍伤,編譯更快
    2.跨平臺响疚,高性能(基于DOM樹渲染原生組件)鳞青,一套Source抢肛,多平臺使用袋励,縮短開發(fā)周期崖瞭,性能相比原生相差不大,比weex和RN要好淋叶,尤   其是在動畫和列表滑動的時候
    3.編碼相對簡單咐刨,上手難度較低码俩,
    4.開發(fā)出的app相對其他跨平臺開發(fā)(WEEX度帮、react native、webApp)更流暢稿存、性能更好
    5.敏捷開發(fā)笨篷,相比較原生,有很多插件支持瓣履,一行調(diào)用代碼即可實現(xiàn)功能
    6.類型安全率翅,Dart是類型安全的語言,支持靜態(tài)類型檢測袖迎,編譯前發(fā)現(xiàn)一些類型的錯誤
    
Flutter缺點:
    1.底層開發(fā)支持相對不夠完善(本地文件IO操作冕臭、狀態(tài)欄的監(jiān)聽修改、相機相冊等)
    2.Native相比Flutter性能更優(yōu)燕锥、CPU占用較多
    3.Flutter包比原生包內(nèi)存更大
    4.支持的第三方工具辜贵,第三方框架相對較少
    5.不能獨立運行,更多內(nèi)部實現(xiàn)依賴原生归形,上手需要了解基本原生
    6.widget類型較多念颈,目前已知200+,全部了解需要耗費大量時間
    7.提倡控件的組合而不是繼承连霉,無法重寫View實現(xiàn)自己需要的自定義效果,只能通過多個View組合實現(xiàn)
    8.部分解決方案依賴梯子嗡靡,國內(nèi)開發(fā)資源相對比國外少
    9.Dart語言是嵌套式語言跺撼,多層嵌套會代碼結(jié)構(gòu)比較凌亂
    10.有一些優(yōu)化缺陷,類似于在input輸入框中選中文字時讨彼,Android剪切粘貼菜單可能會像素溢出的問題歉井,iOS可能存在點擊其他input  會把之前input的內(nèi)容自動帶下來

4)目前flutter的最新情況。
目前最新flutter版本1.12.13哈误。Dart語言版本2.7.0
Samba集成版本1.7.8
SaWaKaMi集成版本1.9.1
Flutter從1.9版本開始穩(wěn)定支持flutter on web哩至、支持 macOS Catalina 和 iOS 13躏嚎、引入全新的 Material 風(fēng)格小部件、新增國際化支持24中國際語言菩貌、默認開發(fā)語言Swift卢佣、Kotlin,flutter on web暫時不穩(wěn)定箭阶,不建議直接使用

5)flutter項目常用第三方(推薦使用:官方插件虚茶,相對穩(wěn)定插件)
# WebView: flutter_webview_plugin
# 提示框: fluttertoast
# 本地存儲: shared_preferences#
# 獲取沙盒路徑:path_provider
# 生成二維碼: qr_flutter
# 網(wǎng)絡(luò)請求: dio http
# 相機相冊: image_picker
# 相冊多選: multi_image_picker
# 獲取設(shè)備信息: device_info
# 本地數(shù)據(jù)庫: objectdb
# 獲取App信息: package_info
# 判斷網(wǎng)絡(luò)狀態(tài): connectivity
# 保存圖片到本地: image_gallery_saver
# 權(quán)限請求: permission_handler
# Google身份驗證:firebase_auth: ^0.11.1+8
# 推送: firebase_messaging
# 分享: esys_flutter_share
# 視頻播放器: video_player

參考文獻:
flutter中國官方:https://flutterchina.club/

flutter中文網(wǎng):https://book.flutterchina.club/

flutter官方文檔:https://flutterchina.club/get-started/install/

flutter插件:https://pub.dev/

github地址:https://github.com/flutter/flutter

flutter更換語言:https://juejin.im/post/5de720676fb9a0160823573a

flutter打包iOS:http://www.reibang.com/p/f88c57403ba4

Flutter打包Android:https://flutterchina.club/android-release/

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市仇参,隨后出現(xiàn)的幾起案子嘹叫,更是在濱河造成了極大的恐慌,老刑警劉巖诈乒,帶你破解...
    沈念sama閱讀 218,122評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件罩扇,死亡現(xiàn)場離奇詭異,居然都是意外死亡怕磨,警方通過查閱死者的電腦和手機喂饥,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來癌压,“玉大人仰泻,你說我怎么就攤上這事√步欤” “怎么了集侯?”我有些...
    開封第一講書人閱讀 164,491評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長帜消。 經(jīng)常有香客問我棠枉,道長,這世上最難降的妖魔是什么泡挺? 我笑而不...
    開封第一講書人閱讀 58,636評論 1 293
  • 正文 為了忘掉前任辈讶,我火速辦了婚禮,結(jié)果婚禮上娄猫,老公的妹妹穿的比我還像新娘贱除。我一直安慰自己,他們只是感情好媳溺,可當我...
    茶點故事閱讀 67,676評論 6 392
  • 文/花漫 我一把揭開白布月幌。 她就那樣靜靜地躺著,像睡著了一般悬蔽。 火紅的嫁衣襯著肌膚如雪扯躺。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,541評論 1 305
  • 那天,我揣著相機與錄音录语,去河邊找鬼倍啥。 笑死,一個胖子當著我的面吹牛澎埠,可吹牛的內(nèi)容都是我干的虽缕。 我是一名探鬼主播,決...
    沈念sama閱讀 40,292評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼失暂,長吁一口氣:“原來是場噩夢啊……” “哼彼宠!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起弟塞,我...
    開封第一講書人閱讀 39,211評論 0 276
  • 序言:老撾萬榮一對情侶失蹤凭峡,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后决记,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體摧冀,經(jīng)...
    沈念sama閱讀 45,655評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,846評論 3 336
  • 正文 我和宋清朗相戀三年系宫,在試婚紗的時候發(fā)現(xiàn)自己被綠了索昂。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,965評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡扩借,死狀恐怖椒惨,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情潮罪,我是刑警寧澤康谆,帶...
    沈念sama閱讀 35,684評論 5 347
  • 正文 年R本政府宣布,位于F島的核電站嫉到,受9級特大地震影響沃暗,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜何恶,卻給世界環(huán)境...
    茶點故事閱讀 41,295評論 3 329
  • 文/蒙蒙 一孽锥、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧细层,春花似錦惜辑、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至虚缎,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背实牡。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評論 1 269
  • 我被黑心中介騙來泰國打工陌僵, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人创坞。 一個月前我還...
    沈念sama閱讀 48,126評論 3 370
  • 正文 我出身青樓碗短,卻偏偏與公主長得像,于是被迫代替她去往敵國和親题涨。 傳聞我的和親對象是個殘疾皇子偎谁,可洞房花燭夜當晚...
    茶點故事閱讀 44,914評論 2 355

推薦閱讀更多精彩內(nèi)容