参考: https://dart.dev/null-safety/migration-guide http://events.jianshu.io/p/a9d49fe637ba
修改项目yaml sdk配置
environment:
sdk: ">=2.12.0 <3.0.0"
修改IDEA SDK path(这里我用的fvm) ![在这里插入图片描述](https://img-blog.csdnimg.cn/352cd645b0c34691a3eb0f3c929b86fd.png) 一:迁移依赖包,先迁叶子,从导入包最少到最多
1.检查Dart2.12版本(前提)
$ dart --version
![在这里插入图片描述](https://img-blog.csdnimg.cn/63b1f6c4ee8f47c69ef9b5250c6bf941.png)
2.检查依赖状态: dart pub outdated --mode=null-safety
dart pub outdated --mode=null-safety
对勾√表示支持空安全 ![在这里插入图片描述](https://img-blog.csdnimg.cn/53f0606e7c2c47318bbdcb77816d3e11.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0dvbGRfYnJpY2s=,size_16,color_FFFFFF,t_70) 3.统一升级到支持空安全的最新版本(会更新yaml)
dart pub upgrade --null-safety
![在这里插入图片描述](https://img-blog.csdnimg.cn/6e17d70da8054ded9ba32f215fa00542.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0dvbGRfYnJpY2s=,size_16,color_FFFFFF,t_70) 键入提示命令
dart pub upgrade --nullsafety dio connectivity badges oktoast flutter_screenutil cached_network_image pull_to_refresh path_provider get photo_view localstorage event_bus launch_review image_picker logger date_format package_info url_launcher shared_preferences permission_handler
![在这里插入图片描述](https://img-blog.csdnimg.cn/f4e0da8e8f8142b8b5a75493d505a13a.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0dvbGRfYnJpY2s=,size_16,color_FFFFFF,t_70) 等待下载… ![在这里插入图片描述](https://img-blog.csdnimg.cn/22d791b8768045ddab5cdc5bdf3ddbd8.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0dvbGRfYnJpY2s=,size_16,color_FFFFFF,t_70) 迁移结果提示 ![在这里插入图片描述](https://img-blog.csdnimg.cn/a0ce205c995e47a8b85ec359ebdf0a7d.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0dvbGRfYnJpY2s=,size_16,color_FFFFFF,t_70) 4.检查依赖迁移状态
dart pub outdated --mode=null-safety
![在这里插入图片描述](https://img-blog.csdnimg.cn/ae9965d61c1247afa8abfae5dceb187a.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0dvbGRfYnJpY2s=,size_16,color_FFFFFF,t_70) 5.修改不支持空安全的依赖(手动修改或替代方案) 6.确保所有依赖项都是空安全和最新的
dart pub outdated --mode=null-safety
![在这里插入图片描述](https://img-blog.csdnimg.cn/4607d3c510b44f1a86f83606ea09c974.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0dvbGRfYnJpY2s=,size_16,color_FFFFFF,t_70) 二:迁移代码 1.分析迁移警告,查看有问题的代码
dart pub get
dart analyze
![在这里插入图片描述](https://img-blog.csdnimg.cn/643113f5eacf48f2a2bd7b91a4da6de4.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0dvbGRfYnJpY2s=,size_16,color_FFFFFF,t_70) 2.启动迁移工具(必须所有叶子先迁完)
dart migrate
会看到报错和提示 ![在这里插入图片描述](https://img-blog.csdnimg.cn/79c00688328a4e4688c12a4a5124fe26.png) 按提示修改1
environment:
sdk: ">=2.7.0 <3.0.0"
按提示修改2
dart pub get
![在这里插入图片描述](https://img-blog.csdnimg.cn/4e06e1a062c74a0fa8e964e5df685fc9.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0dvbGRfYnJpY2s=,size_16,color_FFFFFF,t_70) 再来一次
dart migrate
![在这里插入图片描述](https://img-blog.csdnimg.cn/ed868d5871ff42dfb327e8c1c9560a2e.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0dvbGRfYnJpY2s=,size_16,color_FFFFFF,t_70) 3.打开链接,可以看到相关提示,点击方框接受迁移改动 ![在这里插入图片描述](https://img-blog.csdnimg.cn/fdee49e2d86b4f0ab8b3bdc31e95ba8a.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0dvbGRfYnJpY2s=,size_16,color_FFFFFF,t_70)
|