假设我有具体的类 Cat、Dog 和 Parrot,以及以下接口:
class HasGuid {
HasGuid.fromId(String id);
}
Run Code Online (Sandbox Code Playgroud)
我的目标是保证 Cat、Dog 和 Parrot 都有一个fromId命名构造函数。所以,我可以拨打这样的电话:
Cat.fromId("Whiskers") =returns> [A Future<Cat> object with id "Whiskers"]
Dog.fromId("Fido") =returns> [A Future<Dog> object with id "Fido"]
Parrot.fromId("Polly") =returns> [A Future<Parrot> object with id "Poly"]
Run Code Online (Sandbox Code Playgroud)
fromId正在通过网络进行呼叫,因此我将其作为Future. 我基本上想要一份合同,规定任何混合/扩展/实现/任何类的HasGuid类都将具有fromId. fromId类中的位置T将接受一个身份字符串并返回一个Future<T>.
我想声明,但不想在抽象类中定义工厂构造函数。
就我而言,我想创建一个方法,该方法可以接受实现该String toJson()方法的任何类以及fromJson(Map<String, dynamic> data)工厂构造函数。
有什么办法可以在Dart中实现?我正在寻找类似以下内容的东西,这是无效的Dart代码:
abstract class JsonSerializable {
factory fromJson(Map<String, dynamic> data);
String toJson();
}
Run Code Online (Sandbox Code Playgroud) dart ×2