公司项目flutter sdk需要从2.5升级到3.7。由于项目不支持空安全,所以升级sdk之前要做的第一件事就是启用空安全。以下为空安全适配过程记录。
- 启用空安全
将dart sdk设置成sdk: ">=2.12.0 <3.0.0",即可启用。代码如下:
environment:sdk: ">=2.12.0 <3.0.0"flutter: ">=1.17.0"
- 三方库升级
使用命令dart pub outdated --mode=null-safety来检查哪些三方库需要升级,那些库不需要升级。
使用命令dart pub upgrade --null-safety来进行三方库升级
使用命令dart pub update --null-safety --dry-run来检查三方库升级失败原因
- 本项目适配支持空安全
- 使用名dart migrate来对本项目进行空安全适配
- 使用命令dart migrate --skip-import-check来进行强制进行空安全适配
- 本项目空安全适配常遇到的点
- @required改成required
- 对于可能为空的入参,需要在类型后添加?,如String? data
- 对于必须参数需要加上required,如required int viewId
- 对于返回值为Future<dynamic>,我们可以返回Future<void>、Future<object>、Future<null>等等
- 对于懒加载的变量我们在类型前面加上late,如late int _viewId
- 对于可能为null的变量,如Controller? controller,在确定不为空可以controller!.pageGoBack(),可能为null可以controller?.pageGoBack()