Dart: Error: Setter not found (when defining constructor of a class)
Dart: Error: Setter not found (when defining constructor of a class)
这个非常简单的构造函数出现以下错误:
class MyHomePage extends StatefulWidget {
MyHomePage(String title, String lang, {Key key}) {
this.title = title;
this.lang = lang.substring(0,2).toLowerCase();
super(key: key);
}
final String title;
final String lang;
@override
_MyHomePageState createState() => _MyHomePageState();
}
错误信息:
Compiler message:
lib/main.dart:34:10: Error: Setter not found: 'title'.
this.title = title;
^^^^^
lib/main.dart:35:10: Error: Setter not found: 'lang'.
this.lang = lang.substring(0,2).toLowerCase();
^^^^
lib/main.dart:36:5: Error: Can't use 'super' as an expression.
To delegate a constructor to a super constructor, put the super call as an initializer.
super(key: key);
^
lib/main.dart:34:10: Error: The setter 'title' isn't defined for the class 'MyHomePage
这是为什么?我不明白那是什么意思。
是否有关于如何在飞镖中定义构造函数的全面解释?我在 dart.dev 网站上找不到。
编辑:
将代码编辑为以下内容后:
class MyHomePage extends StatefulWidget {
MyHomePage(String title, String lang, {Key key}) {
title = title;
lang = lang.substring(0,2).toLowerCase();
super(key: key);
}
final String title;
final String lang;
@override
_MyHomePageState createState() => _MyHomePageState();
}
我对编译器有以下抱怨:
Compiler message:
lib/main.dart:36:5: Error: Can't use 'super' as an expression.
To delegate a constructor to a super constructor, put the super call as an initializer.
super(key: key);
^
lib/main.dart:39:16: Error: Final field 'title' is not initialized.
Try to initialize the field in the declaration or in every constructor.
final String title;
^^^^^
lib/main.dart:40:16: Error: Final field 'lang' is not initialized.
Try to initialize the field in the declaration or in every constructor.
final String lang;
在构造函数中初始化 final
变量有特殊的语法,在这里回答:
使用这种语法,工作代码是:
class MyHomePage extends StatefulWidget {
MyHomePage(String title, String lang, {Key key})
: this.title = title,
this.lang = lang.substring(0, 2).toLowerCase(),
super(key: key);
final String title;
final String lang;
@override
_MyHomePageState createState() => _MyHomePageState();
}
这个非常简单的构造函数出现以下错误:
class MyHomePage extends StatefulWidget {
MyHomePage(String title, String lang, {Key key}) {
this.title = title;
this.lang = lang.substring(0,2).toLowerCase();
super(key: key);
}
final String title;
final String lang;
@override
_MyHomePageState createState() => _MyHomePageState();
}
错误信息:
Compiler message:
lib/main.dart:34:10: Error: Setter not found: 'title'.
this.title = title;
^^^^^
lib/main.dart:35:10: Error: Setter not found: 'lang'.
this.lang = lang.substring(0,2).toLowerCase();
^^^^
lib/main.dart:36:5: Error: Can't use 'super' as an expression.
To delegate a constructor to a super constructor, put the super call as an initializer.
super(key: key);
^
lib/main.dart:34:10: Error: The setter 'title' isn't defined for the class 'MyHomePage
这是为什么?我不明白那是什么意思。 是否有关于如何在飞镖中定义构造函数的全面解释?我在 dart.dev 网站上找不到。
编辑: 将代码编辑为以下内容后:
class MyHomePage extends StatefulWidget {
MyHomePage(String title, String lang, {Key key}) {
title = title;
lang = lang.substring(0,2).toLowerCase();
super(key: key);
}
final String title;
final String lang;
@override
_MyHomePageState createState() => _MyHomePageState();
}
我对编译器有以下抱怨:
Compiler message:
lib/main.dart:36:5: Error: Can't use 'super' as an expression.
To delegate a constructor to a super constructor, put the super call as an initializer.
super(key: key);
^
lib/main.dart:39:16: Error: Final field 'title' is not initialized.
Try to initialize the field in the declaration or in every constructor.
final String title;
^^^^^
lib/main.dart:40:16: Error: Final field 'lang' is not initialized.
Try to initialize the field in the declaration or in every constructor.
final String lang;
在构造函数中初始化 final
变量有特殊的语法,在这里回答:
使用这种语法,工作代码是:
class MyHomePage extends StatefulWidget {
MyHomePage(String title, String lang, {Key key})
: this.title = title,
this.lang = lang.substring(0, 2).toLowerCase(),
super(key: key);
final String title;
final String lang;
@override
_MyHomePageState createState() => _MyHomePageState();
}