简体   繁体   English

Dart Null-Safety - 执行 dart migrate 以升级到新的 null 安全时出现范围错误

[英]Dart Null-Safety - Range Error when executing dart migrate to upgrade to new null safety

I'm having problems upgrading a custom package to null safety and am not finding any solutions or even the same problem when searching on here and any other platform.我在将自定义包升级到空安全时遇到问题,并且在此处和任何其他平台上搜索时没有找到任何解决方案,甚至没有找到相同的问题。

When upgrading a custom package for Flutter 2.0 null-safety I'm using dart migrate as the guide proposes, but am getting a compiler Error.在为 Flutter 2.0 空安全升级自定义包时,我按照指南的建议使用了dart migrate ,但出现编译器错误。

But the error does not specify where it occurs nor is the errors description any help.但是错误没有指定它发生的位置,错误描述也没有任何帮助。 I looked through the entire package to find any Array/List or inclusive range error, without any success.我查看了整个包以找到任何数组/列表或包含范围错误,但没有任何成功。

I'm running out of ideas to fix this error and complete the upgrade to null-safety.我没有任何想法来修复此错误并完成对空安全的升级。 Does someone have an idea what I can try to fix this error?有人知道我可以尝试修复此错误吗?

Error message :错误信息

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>

This appears to be a bug in the Dart SDK itself.这似乎是 Dart SDK 本身的一个错误。 This is tracked in dart-lang/sdk#46183 and was fixed in this commit .这在dart-lang/sdk#46183 中进行了跟踪,并在此提交中得到了修复。

Steps to try on your end:试用步骤:

  1. Run flutter upgrade to be sure you're on the latest release.运行flutter upgrade以确保您使用的是最新版本。
  2. If you are still encountering the issue after that, consider changing to Flutter's beta channel to get a more bleeding-edge SDK in order to run the migration tool, then switch back to the stable channel once you're done.如果此后您仍然遇到问题,请考虑更改为 Flutter 的beta通道以获得更前沿的 SDK 以运行迁移工具,然后在完成后切换回stable通道。 You can do this by running flutter channel beta , then re-running the migration, then flutter channel stable to switch back.您可以通过运行flutter channel beta ,然后重新运行迁移,然后flutter channel stable切换回来。

I had the same issue, it is fixed in beta channel as stated in the cbracken's answer.我遇到了同样的问题,如 cbracken 的回答中所述,它已在 beta 频道中修复。

Also, in my case I had second Dart SDK (2.12) installed outside Flutter, so the issue appeared to be unresolved.另外,就我而言,我在 Flutter 之外安装了第二个 Dart SDK (2.12),所以问题似乎没有解决。

Make sure you are running dart migrate using dart included in your Flutter SDK Flutter/bin folder.确保您正在使用 Flutter SDK Flutter/bin文件夹中包含的dart migrate运行dart migrate

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM