Rut*_*jer 10 generics json dart
在 Swift 中,我习惯于设置 a protocol JSONInitializable,它定义了一个init?(json: JSON)含义,即所有符合协议的类和结构都可以使用 JSON 对象进行初始化。
这在 Dart 中是不可能的(带有abstract class),因为静态方法和工厂初始值设定项不是从抽象类继承的吗?
我问的原因是因为我正在为 API GET 请求编写很多类似的方法,这些方法可以很容易地合并为一个,例如:
static Future<T> get<T extends JSONInitializable>(int id) async {
final resourceName = T; // TODO: transform to snake case
final uri = Uri.parse("$kApiHostname/api/$resourceName/$id");
final response = await _secureGet(uri);
if (response == null) {
return null;
}
final responseJson = json.decode(response.body);
final model = T.fromJson(responseJson);
return model;
}
Run Code Online (Sandbox Code Playgroud)
但是为了让它工作,我需要限制T到定义.fromJson()初始化程序的协议/接口。
| 归档时间: |
|
| 查看次数: |
1350 次 |
| 最近记录: |