【发布时间】:2020-07-22 15:31:47
【问题描述】:
我在颤振中有以下代码。它按预期工作。我有一个服务类。它有一个 getList 方法。该方法返回一个用户列表。
import 'package:http/http.dart' as http;
const ROOT = 'http://localhost/app/users.php';
class User{
final String id;
final String name;
User({
this.id,
this.name,
});
factory User.fromJson(Map<String, dynamic> json) {
return User(
id: json['id'] as String,
name: json['name'] as String,
);
}
}
class Services {
Future<List<User>> getList() async {
try {
var map = new Map<String, dynamic>();
map["action"] = "fetch-all";
final response = await http.post(ROOT, body: map);
if (response.statusCode == 200) {
final parsed = json.decode(response.body).cast<Map<String, dynamic>>();
List<User> list = parsed.map<User>((json) => User.fromJson(json)).toList();
return list;
} else {
throw List<User>();
}
} catch (e) {
return List<User>();
}
}
}
我正在尝试从上面的代码中创建一个通用方法。我可以在 getList() 方法中传递任何对象类型(例如:上述代码中的用户)作为参数,并获取此对象作为参数传入的输出列表。
例如:代替用户对象可以传递专辑对象作为参数,我可以获得专辑列表作为输出。
可能是这样的方法:
Future<List> getList({Map map, MyClass}) async {
final response = await http.post(ROOT, body: map);
print("getUsers >> Response:: ${response.body}");
if (response.statusCode == 200) {
final parsed = json.decode(response.body).cast<Map<String, dynamic>>();
return parsed.map<MyClass>((json) => User.fromJson(json)).toList();
} else {
print("no data");
throw List<MyClass>();
}
}
这里的MyClass是一个可以传递的动态Object。
【问题讨论】:
标签: flutter