Firebase 强制API用户实现静态方法的选项有哪些?

Firebase 强制API用户实现静态方法的选项有哪些?,firebase,dart,google-cloud-firestore,Firebase,Dart,Google Cloud Firestore,我目前正在使用BLoC模式来实现firebase/firestore功能。实现模型、实体(基本上是数据库持有的模型)和处理程序请求的存储库似乎很常见 要将模型转换为实体,反之亦然,模型需要使用toEntity和fromtentity方法。我想让我的班级看起来像这样: @immutable abstract class DatabaseModel { final id; DatabaseEntity toEntity(); DatabaseModel({@required this.

我目前正在使用BLoC模式来实现firebase/firestore功能。实现模型、实体(基本上是数据库持有的模型)和处理程序请求的存储库似乎很常见

要将模型转换为实体,反之亦然,模型需要使用
toEntity
fromtentity
方法。我想让我的班级看起来像这样:

@immutable
abstract class DatabaseModel {
  final id;
  DatabaseEntity toEntity();

  DatabaseModel({@required this.id});

  static DatabaseModel fromEntity(DatabaseEntity entity);
}
abstract class DatabaseModel {
  final id;
  DatabaseEntity toEntity();

  DatabaseModel({@required this.id});

  static DatabaseModel createFromEntity(DatabaseEntity entity, DatabaseModel instance) {
    return instance.fromEntity(entity);
  }

  DatabaseModel fromEntity(DatabaseEntity entity);
}
然而,这是不可能的。Dart不允许没有函数体的静态方法,如中所述,因为静态方法不会以任何方式继承

我考虑将
fromtentity
方法实现为
DatabaseModel
模型的成员方法,并使用一个调用成员方法的附加静态方法,如下所示:

@immutable
abstract class DatabaseModel {
  final id;
  DatabaseEntity toEntity();

  DatabaseModel({@required this.id});

  static DatabaseModel fromEntity(DatabaseEntity entity);
}
abstract class DatabaseModel {
  final id;
  DatabaseEntity toEntity();

  DatabaseModel({@required this.id});

  static DatabaseModel createFromEntity(DatabaseEntity entity, DatabaseModel instance) {
    return instance.fromEntity(entity);
  }

  DatabaseModel fromEntity(DatabaseEntity entity);
}
但由于以下缺点,我决定不使用这种方法:

  • 继承类不能再是
    @不可变的
  • 创建一个新实例并不是很简单,因为例如,
    类YouTubeComment
    的对象会像这样实例化-
    DatabaseModel.createFromEntity(entity,YouTubeComment())
  • 这需要继承类实现一个空构造函数来创建实例 由于不可能实现一个静态方法或一个合适的构造函数,有没有办法向开发人员发出信号,表明它打算实现一个静态方法?