【发布时间】:2019-07-25 17:25:18
【问题描述】:
亲爱的
我想要具有以下模式的抽象泛型类 我的手机型号如下:
class Phone extends ModelInterface {
...
@override
static dynamic getErrorInstance(Map<String, dynamic> map) {
return Phone.fromErrors(map);
}
@override
static dynamic getResponseInstance(Map<String, dynamic> map) {
return Phone.fromMap(map);
}
}
如您所见,Phone 模型扩展了 ModelInterface,并且有两个重写方法 getErrorInstance 和 getResponseInstance
这两个方法在ModelInterface抽象类中定义为静态
abstract class ModelInterface {
static dynamic getErrorInstance(Map<String, dynamic> map) {}
static dynamic getResponseInstance(Map<String, dynamic> map) {}
}
我想做的是创建一个基于响应类型构建对象的通用方法,如下所示
abstract class Base {
...
T getModel<T extends ModelInterface>(Map<String, dynamic> map) {
if (hasErrors(map)) {
return T.getErrorInstance(map);
}
return T.getResponseInstance(map);
}
}
这个方法的客户端getModel如下所示
class UserAuth extends Base {
Future<Phone> registerPhone(Phone phone) async {
String url = Routes.phoneUrl;
String body = json.encode(phone.toMap());
final response = await http.post(url, body: body, headers: Routes.headers);
final responseBody = json.decode(response.body);
// here I want the generic type to be phone
return getModel<Phone>(responseBody);
}
}
但是我得到了这个错误
谢谢
【问题讨论】:
-
你不能覆盖静态方法。
-
@Tidder 我将如何处理上述问题