升級 Flutter 2

image.png

Flutter 2 發(fā)布至今已經(jīng)1個(gè)多月了,不知道小伙伴們都升級體驗(yàn)了沒有。官方發(fā)布的Flutter 2 技術(shù)博文中詳細(xì)介紹了Flutter 2 帶來的更新,大體包括:

  • 修復(fù)了大量bug
  • Flutter web 達(dá)到穩(wěn)定版
  • Dart 更新到 2.12,引入空安全(Null Safety)
  • iOS 新特性支持
  • 大量新組件的加入
  • 混合開發(fā)時(shí),啟動(dòng)多個(gè) Flutter 實(shí)例,內(nèi)存占用減少 99% ??
  • 部分 Api 改動(dòng),包括方法或參數(shù)的廢棄,參數(shù)增減等

很多三方庫已經(jīng)做了適配升級,后續(xù)的bug修復(fù)都會(huì)在新版本中升級,舊版本的 Flutter 無法使用。如果你的項(xiàng)目中的沒有遇到三方庫的bug,那么可以暫時(shí)保持觀望,但還是應(yīng)該盡快升級,后續(xù)的 Android、iOS 甚至是 Xcode 更新都有可能導(dǎo)致你的 App 不可用。

升級步驟

第一步當(dāng)然是

$ flutter upgrade

但是別急,F(xiàn)lutter 2 要求項(xiàng)目中三方庫適配 Null Safety,否則無法編譯通過,所以首先使用如下命令

$ dart pub outdated --mode=null-safety

檢查你的三方庫是否支持 Null Safety,如下圖所示

image.png

如果所有三方庫的新版本都支持了 Null Safety,那么就可以放心升級 Flutter 版本了。剩下的步驟都在 Migrating to null safety 這篇文章中,大家可以自己去看。

以上是理想情況下的升級方法,現(xiàn)實(shí)是一些三方庫維護(hù)速度很慢或者作者干脆棄坑了,而項(xiàng)目又不得不用,另外又有些庫的 bug 困擾了我們很久,然后我們發(fā)現(xiàn)它在 Null Safety 的版本上修復(fù)了,這時(shí)我們只有硬著頭皮上了。下面我們重點(diǎn)討論這種情況。

第一步還是要升級 Flutter,然后把能升級的 package 全部升級了。

第二步把無法升級的 package 源碼 clone 到項(xiàng)目中,記得刪除 .git 目錄。把引用方式改成源碼引用,比如

# azlistview: ^1.1.1
azlistview:
  path: ./azlistview

然后將終端命令位置移動(dòng)到 package 目錄中,運(yùn)行

$ dart pub outdated --mode=null-safety

檢查 package 項(xiàng)目的所有依賴都有對應(yīng)的 Null Safety 版本,如果沒有請重復(fù)第二步。升級完后運(yùn)行

$ dart migrate

提示

View the migration suggestions by visiting:

  http://127.0.0.1:60278/Users/you/project/mypkg.console-simple?authToken=Xfz0jvpyeMI%3D

瀏覽器打開鏈接,點(diǎn)擊 APPLY MIGRATION。

image.png

對于自己創(chuàng)建的 package 或者 plugin,操作相同。

最后,將終端命令移到主項(xiàng)目根路徑,運(yùn)行

$ dart migrate

操作同上一步。

遷移命令執(zhí)行完之后,并不代表完全 OK 了,我們還要把 Dart Analysis 提示的所有 error 全部解決

image.png

可以嘗試使用

$ dart fix --apply

修復(fù)所有 Api 改動(dòng)引起的錯(cuò)誤,也可以用 IDE來修改。

image.png

整個(gè)過程可能要花很長時(shí)間,過于細(xì)小的修改就不贅述了,祝大家都升級成功!

參考文章

1. Announcing Flutter 2
2. What’s New in Flutter 2
3. Migrating to null safety

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

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容