如何在 flutter dart 中将对象映射到不同类型的对象?

How can I map an object to different type of object in flutter dart?

有什么方法可以将 PersonModel 对象映射到 flutter dart 中的 PersonEntity 吗?

这就是我目前做这种映射的方式,首先我为映射器声明一个接口(抽象的 class):

abstract class Mapper<FROM, TO> {
  TO call(FROM object);
}

然后,我为任何模型、实体制作自定义映射器,如下所示:

class ToSource implements Mapper<SourceModel, Source> {
  @override
  Source call(SourceModel object) {
    return Source(
      id: object.id,
      name: object.name,
    );
  }
}

并且用法如下:(将 SourceModel class 映射到 Source class)

final toSourceMapper = ToSource();

final sourceModel = SourceModel(id: 'f4sge248f3', name: 'bbc news');
final source = toSourceMapper(sourceModel);

如果有其他更好的方法来做这样的事情,请在下面回答..这对所有人都有帮助。

最简单的方法:

void main() {
  final model = PersonModel(id: 0, name: 'name0');
  final entity = _convert(model);
  print(entity);
}

final _convert = (PersonModel e) => PersonEntity(
      id: e.id,
      name: e.name,
    );

class PersonEntity {
  int id;
  String name;
  PersonEntity({this.id, this.name});

  @override
  String toString() => 'id: $id, name: $name';
}

class PersonModel {
  int id;
  String name;
  PersonModel({this.id, this.name});
}

结果:

id: 0, name: name0