跳到主要内容

top_level_cycle

类型 '{0}' 无法推断,因为它通过循环依赖于自身:{1}。

描述

#

当顶级变量没有类型注解,且该变量的初始化表达式直接或间接引用了该变量自身时,分析器会生成此诊断信息。

示例

#

以下代码会生成此诊断信息,因为变量 xy 互相定义,且都没有显式类型,因此无法推断出对方的类型

dart
var x = y;
var y = x;

常见修复方法

#

如果两个变量不需要互相引用,则打破循环

dart
var x = 0;
var y = x;

如果两个变量需要互相引用,则至少给其中一个变量一个显式类型

dart
int x = y;
var y = x;

然而请注意,虽然这段代码不会产生任何诊断信息,但在运行时会产生堆栈溢出,除非在引用循环中的任何变量之前,至少有一个变量被赋值为一个不依赖于其他变量的值。