Dart 必须初始化不可为空的实例字段 class-Foo{ int count;//错误 空条()=>计数=0; }
当我已经在Dart 必须初始化不可为空的实例字段 class-Foo{ int count;//错误 空条()=>计数=0; },dart,Dart,当我已经在bar方法中初始化错误时,为什么会看到错误?如果count标记为final则我可以理解此错误,因为您的代码在零安全性到达之前是正常的 使用空安全性,Dart无法知道您是否实际为count分配了一个变量。Dart可以通过三种方式查看初始化: (1) 在申报时: int count=0; (2) 在初始化形式中 Foo(this.count); (3) 在初始值设定项列表中 Foo():count=0; 因此,根据Dart的说法,count从未在代码中初始化过,因此出现了错误。解决方
bar
方法中初始化错误时,为什么会看到错误?如果count
标记为final
则我可以理解此错误,因为您的代码在零安全性到达之前是正常的
使用空安全性,Dart无法知道您是否实际为count
分配了一个变量。Dart可以通过三种方式查看初始化:
(1) 在申报时:
int count=0;
(2) 在初始化形式中
Foo(this.count);
(3) 在初始值设定项列表中
Foo():count=0;
因此,根据Dart的说法,count
从未在代码中初始化过,因此出现了错误。解决方案是用上面所示的3种方式初始化它,或者只使用late
关键字,这将告诉Dart您将在使用变量之前的某个其他点初始化变量
class-Foo{
延迟int计数;//无错误
空条()=>计数=0;
}
或
如果您认为count
可以为null
,请使用int?
将其设置为null
class Foo {
int? count; // No error
void bar() => count = 0;
}
但是,您必须使用bang操作符(!)
来消除空性
int result=count!;
在零安全性到来之前,您的代码是正常的
使用空安全性,Dart无法知道您是否实际为count
分配了一个变量。Dart可以通过三种方式查看初始化:
(1) 在申报时:
int count=0;
(2) 在初始化形式中
Foo(this.count);
(3) 在初始值设定项列表中
Foo():count=0;
因此,根据Dart的说法,count
从未在代码中初始化过,因此出现了错误。解决方案是用上面所示的3种方式初始化它,或者只使用late
关键字,这将告诉Dart您将在使用变量之前的某个其他点初始化变量
class-Foo{
延迟int计数;//无错误
空条()=>计数=0;
}
或
如果您认为count
可以为null
,请使用int?
将其设置为null
class Foo {
int? count; // No error
void bar() => count = 0;
}
但是,您必须使用bang操作符(!)
来消除空性
int result=count!;