Flutter示例应用执行dart migrate时的空安全迁移异常问题
空安全迁移工具误将本地main.dart识别为外部非空安全库
问题场景
- 在Android Studio创建的Flutter计数器示例项目中运行
dart migrate工具,已添加待迁移的标记代码;因大型项目存在相同问题,故使用最小复现项目排查 - 预期迁移工具加载并处理
main.dart,但工具将其识别为导入的非空安全库,导致无法继续迁移流程
环境与配置
版本信息
- Flutter 3.7.12(未知渠道)
- Framework 修订版:4d9e56e694(2023-04-17)
- Engine 修订版:1a65d409c7
- Dart 2.19.6
- DevTools 2.20.1
pubspec.yaml核心配置
environment: sdk: '>=2.11.0 <3.0.0'
完整pubspec.yaml代码:
name: migrate1 description: A new Flutter project. publish_to: 'none' # 私有包配置,防止意外发布到pub.dev version: 1.0.0+1 environment: sdk: '>=2.11.0 <3.0.0' dependencies: flutter: sdk: flutter cupertino_icons: ^1.0.2 dev_dependencies: flutter_test: sdk: flutter flutter_lints: ^2.0.0 flutter: uses-material-design: true
命令执行结果
运行dart migrate后,控制台输出:
在迁移您的包之前,我们建议确保所有直接或间接导入的库都已迁移至空安全,以便您能在严格空检查模式下运行单元测试。您当前导入了以下非空安全库:
package:migrate1/main.dart
请先升级包含这些库的包至空安全版本,再继续操作。如需查看可用的空安全包版本,请执行命令:dart pub outdated --mode=null-safety。
问题猜测
该问题疑似是迁移工具的逻辑错误,误将本地项目内的main.dart识别为外部依赖库,而非待迁移的本地代码,此表现与Dart SDK的已知问题特征匹配。
内容的提问来源于stack exchange,提问作者user1961
相关产品推荐
相关产品推荐

