flutter 这种用法的意义是什么
flutter what is the point of that usage
我在开源的flutter项目中找代码的时候,有个用户使用了这样的模型。我无法在这里得到这个想法。它不需要使用 getter 花括号术语中的重点是什么:
_email = email;
_password = password;
class LoginModel {
String? _email;
String? _password;
LoginModel({
String? email,
String? password,
}) {
_email = email;
_password = password;
}
Map<String, dynamic> toJson() {
var map = <String, dynamic>{};
map["email"] = _email;
map["password"] = _password;
return map;
}
set email(String value) => _email = value;
set password(String value) => _password = value;
}
我强烈建议您观看一些有关 dart 的语言概述或查看文档 here。但要回答你的问题:
- 下划线表示变量是私有的。
- 花括号表示可选参数。因此初始化登录模型的人可以执行以下任何操作:
LoginModel()
LoginModel(email: "")
LoginModel(password: "")
LoginModel(email: "", password: "")
非可选参数在花括号外初始化。如果我希望需要电子邮件而不是密码,我可以执行以下操作:
LoginModel(String email, {String? password})
实际上,您有几个选择:
而不是将 class 参数作为私有 和 命名,你可以只将它们私有并这样做(如果你想要它们要保密,他们不能被命名,因为其他 classes 将看不到名字):
LoginModel(
this._email,
this._password,
)
您可以通过向它们添加所需的标记并删除私有指示符 _
来使它们命名并成为实例化 class 所必需的,如下所示:
LoginModel({
required this.email,
required this.password,
})
或者您可以只对它们进行命名而不是必需的(因为它们可以为空):
LoginModel({
this.email,
this.password,
})
我在开源的flutter项目中找代码的时候,有个用户使用了这样的模型。我无法在这里得到这个想法。它不需要使用 getter 花括号术语中的重点是什么:
_email = email;
_password = password;
class LoginModel {
String? _email;
String? _password;
LoginModel({
String? email,
String? password,
}) {
_email = email;
_password = password;
}
Map<String, dynamic> toJson() {
var map = <String, dynamic>{};
map["email"] = _email;
map["password"] = _password;
return map;
}
set email(String value) => _email = value;
set password(String value) => _password = value;
}
我强烈建议您观看一些有关 dart 的语言概述或查看文档 here。但要回答你的问题:
- 下划线表示变量是私有的。
- 花括号表示可选参数。因此初始化登录模型的人可以执行以下任何操作:
LoginModel()
LoginModel(email: "")
LoginModel(password: "")
LoginModel(email: "", password: "")
非可选参数在花括号外初始化。如果我希望需要电子邮件而不是密码,我可以执行以下操作:
LoginModel(String email, {String? password})
实际上,您有几个选择:
而不是将 class 参数作为私有 和 命名,你可以只将它们私有并这样做(如果你想要它们要保密,他们不能被命名,因为其他 classes 将看不到名字):
LoginModel( this._email, this._password, )
您可以通过向它们添加所需的标记并删除私有指示符
_
来使它们命名并成为实例化 class 所必需的,如下所示:LoginModel({ required this.email, required this.password, })
或者您可以只对它们进行命名而不是必需的(因为它们可以为空):
LoginModel({ this.email, this.password, })