如何在 dart 或 flutter 中正确创建 class
how create a class in dart or flutter correctly
我想用他的构造函数、getter 和 setter 以及操作数据的典型方法创建一个具有私有属性的 class。
构造函数定义是否正确? (@required 和 required 有什么区别)
如何正确编写此构造函数?
Actividad({required _id, required _nombre});
我的代码如下:
class Actividad{
int _id;
String _nombre;
Actividad({required _id, required _nombre});
int get id => _id;
String get nombre => _nombre;
set id(int nuevoId) {
_id = nuevoId;
}
set nombre(String nuevoNombre) {
_nombre = nuevoNombre;
}
Map<String, dynamic> toMap() {
return {
'id': _id,
'nombre': _nombre
};
}
@override
String toString() {
return 'Actividad{id: $_id, nombre: $_nombre}';
}
}
见下文:
class Actividad {
int id;
String nombre;
Actividad({required this.id, required this.nombre});
Map<String, dynamic> toMap() {
return {
'id': id,
'nombre': nombre
};
}
@override
String toString() {
return 'Actividad{id: $id, nombre: $nombre}';
}
}
这就是我写 class 的方式。几点:
- 按照你的写法,我认为没有必要显式定义 setter 和 getter,除非你想在其中添加一些东西
- 您可以考虑将字段设置为 id 和更多 final - 这将使您的 Actividad 对象不可变
- required 现在是保留字,由编译器严格检查。 @required 是过去的注释,仅被 linter 使用,建议您在不传递值的情况下传递值
我想用他的构造函数、getter 和 setter 以及操作数据的典型方法创建一个具有私有属性的 class。
构造函数定义是否正确? (@required 和 required 有什么区别)
如何正确编写此构造函数?
Actividad({required _id, required _nombre});
我的代码如下:
class Actividad{
int _id;
String _nombre;
Actividad({required _id, required _nombre});
int get id => _id;
String get nombre => _nombre;
set id(int nuevoId) {
_id = nuevoId;
}
set nombre(String nuevoNombre) {
_nombre = nuevoNombre;
}
Map<String, dynamic> toMap() {
return {
'id': _id,
'nombre': _nombre
};
}
@override
String toString() {
return 'Actividad{id: $_id, nombre: $_nombre}';
}
}
见下文:
class Actividad {
int id;
String nombre;
Actividad({required this.id, required this.nombre});
Map<String, dynamic> toMap() {
return {
'id': id,
'nombre': nombre
};
}
@override
String toString() {
return 'Actividad{id: $id, nombre: $nombre}';
}
}
这就是我写 class 的方式。几点:
- 按照你的写法,我认为没有必要显式定义 setter 和 getter,除非你想在其中添加一些东西
- 您可以考虑将字段设置为 id 和更多 final - 这将使您的 Actividad 对象不可变
- required 现在是保留字,由编译器严格检查。 @required 是过去的注释,仅被 linter 使用,建议您在不传递值的情况下传递值