升级项目Flutter SDK,迁移到空安全-包中的编译时错误



我们决定在现有项目中将Flutter版本从1.22升级到2.0(迁移到零安全(
我们签出Flutter v2.0.0,然后运行以下命令:

dart pub upgrade --null-safety

Flutter很好地解决了所有依赖冲突,并为包设置了新版本
在不更改pubspec.yaml中的min环境SDK的情况下(停留在">2.10.0<3.0.0"(,我们修复了代码中的所有破坏性更改。

vs代码中的所有错误都会消失,这样我们就可以编译代码了。但是,当我们进行编译时,我们会从包中得到错误,例如reorderables、fl_chart、flaft_svg等,声明某些类是未定义的。软件包似乎是用更高的SDK版本编译的,并且它们没有设置为与编译时的版本相匹配的最小SDK版本。

因此,该包声明它可以用Flutter 2.10.0编译,但实际上,它无法编译,因为在这个版本的Flutter中,它缺少一些必要的导入。

我的问题是,这是包的问题还是我处理迁移的方式的问题
是不是软件包缺少正确设置的min-SDK?

我的结论是,大多数软件包都缺乏正确设置的SDK版本约束。似乎作者通常为某个版本编译包,而不检查所需的最低SDK版本。当运行依赖解析程序时,它似乎可以解决依赖关系,但在编译时它失败了。

最新更新