如何在 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 使用,建议您在不传递值的情况下传递值