为什么这段代码:
class _SequentialTextPageState {
String jsonTextPref = 'seqtext';
int jsonTextSuff = 10;
String jsonText = jsonTextPref + jsonTextSuff.toString();
}
Run Code Online (Sandbox Code Playgroud)
产生这些错误?
Error: The instance member 'jsonTextPref' can't be accessed in an initializer.
Error: The instance member 'jsonTextSuff' can't be accessed in an initializer.
Run Code Online (Sandbox Code Playgroud)
在我看来,String
和之间的串联int
是正确的吗?
jam*_*lin 10
Dart 在多个阶段初始化对象。直接初始化成员(“字段初始化程序”)发生在对象初始化的早期,在this
变得有效之前,因此该阶段无法初始化依赖于对象其他部分的成员。
Dart 提供了多种初始化成员的方法,因此如果一个成员需要依赖于另一个成员,您可以在稍后阶段使用不同的机制来初始化它。例如,您可以执行以下操作之一:
late
关键字使依赖成员延迟初始化。State
类型,您可以在其方法中初始化依赖成员initState
,这在某些情况下更合适。请注意,在某些情况下,您还可以考虑用只读getter替换成员变量。例如,在您的情况下,也许您可以使用:
String get jsonText => jsonTextPref + jsonTextSuff.toString();
Run Code Online (Sandbox Code Playgroud)
如果应该jsonText
始终依赖于jsonTextPref
和jsonTextSuff
,永远不需要有独立的值,并且jsonText
每次访问时都返回一个新对象是可以接受的,那么这将是合适的。
归档时间: |
|
查看次数: |
12198 次 |
最近记录: |