You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

执行dart migrate升级Dart空安全时出现RangeError范围错误

问题根因说明

你遇到的RangeError不属于业务代码的数组/列表范围错误,是Dart SDK内置的analyzer分析包在处理代码注解时触发的已知内部bug,报错堆栈里的visitAnnotation调用栈也指向注解处理逻辑,你之前排查业务代码范围问题的方向不匹配报错根源。

排查&解决方案
  • 方案1:升级Dart SDK到对应大版本的最新稳定版
    该错误普遍存在于早期空安全测试版本的Dart SDK中,先将SDK升级到2.12.x分支的最新稳定版,升级后重新执行dart migrate即可解决多数同类问题。
  • 方案2:排查项目内的自定义注解
    遍历项目内所有自定义注解、以及用到注解的类/方法:
    1. 检查自定义注解上标注的@Target配置是否存在非法枚举值、或者枚举数量超过了当前analyzer支持的范围
    2. 临时注释掉所有非系统内置的注解,再执行dart migrate验证是否恢复正常,再逐步放开注解定位触发问题的具体注解
  • 方案3:增量文件排查法
    将项目lib目录下的文件分批移出到项目外,每次移除后执行一次dart migrate,直到命令不再报错,即可定位到触发问题的目标文件,重点检查该文件内标注的类注解、方法注解即可。
  • 方案4:绕开自动迁移工具手动迁移
    如果上述方案都无效,可以放弃自动迁移工具手动完成适配:
    1. 先将pubspec.yaml中的sdk约束修改为>=2.12.0 <3.0.0
    2. 给所有dart文件头部添加// @dart=2.9注释临时关闭空安全校验
    3. 逐个文件移除注释,按空安全规则修改代码即可。
报错信息存档
dart migrate           
Migrating file_name

See https://dart.dev/go/null-safety-migration for a migration guide.

Note: more than one project found; migrating the top-level project.

Analyzing project...
[--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------]No analysis issues found.

Generating migration suggestions...
[--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------]

Compiling instrumentation information...
[--------------------|                                                                                                                                                                 ]RangeError (index): Invalid value: Not in inclusive range 0..12: 13
#0      List.[] (dart:core-patch/array.dart:268:52)
#1      BestPracticesVerifier._targetKindsFor (package:analyzer/src/error/best_practices_verifier.dart:1582:38)
#2      BestPracticesVerifier.visitAnnotation (package:analyzer/src/error/best_practices_verifier.dart:250:17)
#3      AnnotationImpl.accept (package:analyzer/src/dart/ast/ast.dart:280:49)
#4      NodeListImpl.accept (package:analyzer/src/dart/ast/ast.dart:7611:20)
#5      AnnotatedNodeImpl.visitChildren (package:analyzer/src/dart/ast/ast.dart:148:17)
#6      ClassDeclarationImpl.visitChildren (package:analyzer/src/dart/ast/ast.dart:1559:11)
#7      RecursiveAstVisitor.visitClassDeclaration (package:analyzer/dart/ast/visitor.dart:707:10)
#8      BestPracticesVerifier.visitClassDeclaration (package:analyzer/src/error/best_practices_verifier.dart:320:13)
#9      ClassDeclarationImpl.accept (package:analyzer/src/dart/ast/ast.dart:1536:49)
#10     NodeListImpl.accept (package:analyzer/src/dart/ast/ast.dart:7611:20)
#11     CompilationUnitImpl.visitChildren (package:analyzer/src/dart/ast/ast.dart:2141:21)
#12     RecursiveAstVisitor.visitCompilationUnit (package:analyzer/dart/ast/visitor.dart:731:10)
#13     CompilationUnitImpl.accept (package:analyzer/src/dart/ast/ast.dart:2134:49)
#14     LibraryAnalyzer._computeHints (package:analyzer/src/dart/analysis/library_analyzer.dart:281:10)
#15     LibraryAnalyzer.analyzeSync.<anonymous closure> (package:analyzer/src/dart/analysis/library_analyzer.dart:167:9)
#16     _LinkedHashMapMixin.forEach (dart:collection-patch/compact_hash.dart:397:8)
#17     LibraryAnalyzer.analyzeSync (package:analyzer/src/dart/analysis/library_analyzer.dart:166:13)
#18     LibraryAnalyzer.analyze (package:analyzer/src/dart/analysis/library_analyzer.dart:107:12)
#19     AnalysisDriver._computeResolvedLibrary2.<anonymous closure> (package:analyzer/src/dart/analysis/driver.dart:1416:65)
#20     PerformanceLog.run (package:analyzer/src/dart/analysis/performance_logger.dart:32:15)
#21     AnalysisDriver._computeResolvedLibrary2 (package:analyzer/src/dart/analysis/driver.dart:1402:20)
#22     AnalysisDriver._computeResolvedLibrary.<anonymous closure> (package:analyzer/src/dart/analysis/driver.dart:1395:15)
#23     _rootRun (dart:async/zone.dart:1354:13)
#24     _CustomZone.run (dart:async/zone.dart:1258:19)
#25     _runZoned (dart:async/zone.dart:1788:10)
#26     runZoned (dart:async/zone.dart:1710:10)
#27     NullSafetyUnderstandingFlag.enableNullSafetyTypes (package:analyzer/dart/element/null_safety_understanding_flag.dart:42:12)
#28     AnalysisDriver._computeResolvedLibrary (package:analyzer/src/dart/analysis/driver.dart:1394:40)
#29     AnalysisDriver.performWork (package:analyzer/src/dart/analysis/driver.dart:964:22)
#30     AnalysisDriverScheduler._run (package:analyzer/src/dart/analysis/driver.dart:2018:24)
<asynchronous suspension>

内容的提问来源于stack exchange,提问作者bschmalb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.08 02:24:04