【发布时间】:2021-07-24 04:43:40
【问题描述】:
这段代码sn-p
class SomeWidget extends StatelessWidget {
final String aString;
SomeWidget(this.aString);
编译没有错误或警告。不过这段代码sn -p
class SomeWidget extends StatelessWidget {
final String aString;
SomeWidget(String inputString) {
this.aString=inputString;
}
给出一个错误信息,所有的 final 变量都必须被初始化而 aString 不是,并且 aString 不能被用作一个 setter,因为它是 final 的。删除 final 关键字会消除错误消息。
我不清楚这里发生了什么。我看到了this 和this SO 项目,但老实说,我仍然难以理解。我认为对我来说,问题源于我是如何被教导我的两个代码 sn-ps 在功能上相同的。
【问题讨论】:
-
请解释不清楚的地方。你的两个相关问题有很好的解释,你没有说你的理解在哪里下降。
-
这是一个比人们想象的更难的问题,但据我了解,我不知道这两个 sn-ps 会发生什么不同。我被教导第一个是写第二个更短,更方便的方式。但显然它们并不相同。
-
第一个 sn-p 与使用链接问题中显示的初始化列表相同。如果你指的是学习 Dart 以外的语言,你不应该假设它们之间的任何东西都是相同的。毕竟它们是不同的语言。
-
感谢您的耐心等待。说我们几乎必须在 Dart 中使用带有
final属性的第一个 sn-p 语法是否准确? -
你也可以使用初始化列表。除此之外,初始化最终变量的唯一方法是在其声明的同一行进行。
标签: flutter dart constructor