由于项目中用到的很多库都已经升级到nullsafety,但是项目sdk还停留在2.10.0,SDK升级之后导致工程一片飘红,无法使用,故而需要升级到NullSafety,然后SDK才能正常进行升级
1、现有工程FlutterSDK 2.0.1版本
2、SDK环境 >=2.10.0 < 3.0.0
3、工程中引用的三方库有nullsafety版本,还有一些举步不前的版本,没有可引用的nullsafety方案
工程大概有600多个dart文件,错综复杂,尝试升级N次,每次更换SDK之后,到处红,放弃,不再更新
鉴于Flutter的发展以及项目的长期高效,最终决定升级SDK版本,升级项目为NullSafety项目,接下来分享一下自己升级的心得体会,希望能够帮到大家。
升级NullSafety步骤:(sdk在2.10.0之前操作以下)
首先,不建议大家直接就去执行dart migrate,建议大家先根据自己引入的三方SDK,看一下SDK现有支持情况,是否都可以升级到NullSafety,如果有个别依赖库不支持,建议大家找到替代的三方库依赖,实在没有替代方案,建议大家把该依赖库抽离出来,先把依赖库升级到NullSafety,接下来,依赖库都满足条件后,看下代码是否有报错,因为升级库之后,代码使用方式可能发生改变。
其次,终端执行 dart migrate,此时没有其他报错信息,就根据终端提示,继续执行dart pub outdated --mode=null-safety 此时会列出所有依赖库的合适NullSafety版本,此时终端已有提示,无需自己手动去更新替换版本,执行命令即可,此时所有依赖库均已按照要求达到NullSafety标准
最后一步:继续执行dart migrate,顺利的话就会拿到一个本地127.0.0.1生成的变更路径
打开既可以看到所有的dart升级NullSafety的具体变化,大家点击同意即可,apply,之后会发现工程的sdk版本变更为了最低2.12.0,所有的dart代码都加了很多?号的修饰
最最后:就是升级之后的一些优化项和一些小错误,毕竟自动升级不是那么完美,大家要根据需求去修改一下,正常跑起来,即可!