升級版本為 flutter 2.2.1
mac多版本flutter共存可以安裝fvm工具
安裝和使用細(xì)節(jié)可以查看https://juejin.cn/post/6948266183397212174
windows的話有類似的fvm工具
由于flutter2.0 默認(rèn)開啟了空安全牡整,所以遷移都是圍繞代碼的空安全開始膨报,pubspec.yaml中修改下dart版本號
空安全參考文檔:
https://juejin.cn/post/6958965184631144478快速上手 Flutter 空安全
遷移升級流程
1.升級pubspec.yaml中使用到的插件瞎领,更新至支持空安全版本凸丸,本地維護(hù)的插件先備份别惦,再升級弧可,待升級完成后谷暮,同步本地插件的修改或者查看之前修改內(nèi)容在最新版本插件是否已修復(fù)蒿往,對于不再維護(hù)的插件,如果是簡單插件再引入本地湿弦,進(jìn)行空安全修改瓤漏,復(fù)雜插件需求替代插件?(待項目運(yùn)行成功后對備份的插件進(jìn)行進(jìn)行同步)
?dart pub outdated --mode=null-safety?//檢查插件空安全支持情況
2.api修改,flutter2.0屬于大版本更新颊埃,有些widget的api有所有修改需要進(jìn)行對應(yīng)的修改
3.之前自動生成的model文件都要加上空安全蔬充,然后重新使用build_runner生成model文件
4.開始遷移控制臺運(yùn)行?dart migrate命令,順利的話會啟動一個內(nèi)網(wǎng)服務(wù)器可以在上面竟秫,或者一堆報錯對應(yīng)文件進(jìn)行修改
遷移注意事項:
在聲明或者使用變量時娃惯,如果不能保證非空,不要使用!取值肥败,也不要使用非空變量趾浅,沒有?的變量即為非空變量愕提,編寫空安全代碼時,要清楚的變量是否非空或者是可空皿哨,在使用!強(qiáng)制非空時浅侨,先判斷對象是否為null,使用?.調(diào)用方法,回調(diào)的話使用xx?.call(),使用??賦默認(rèn)值证膨,使用as轉(zhuǎn)換響應(yīng)類型
常見報錯:
?List()?The default 'List' constructor isn't available when null safety is enabled 修改為<int>[] 或者?<int?>[]?
?Stack overflow已廢除替換為clipBehavior
The argument type 'ModalRoute<Object?>?' can't be assigned to the parameter type 'PageRoute<dynamic>'.? 使用as轉(zhuǎn)換類型?
routeObserver.subscribe(this, ModalRoute.of(context)as PageRoute);