此代码返回的列表为空。假定formatUser是一个异步方法,该方法将用户从远程格式化为合适的格式。为什么我们映射另一个列表时filterUsers列表没有变化?
Future<List<User>> fetchUsers() async{
final list<User> usersFromRemote = await getUserFromRemote();
final List<User> filterUsers = [];
usersFromRemote.map((user) async {
if(user.name != 'jim')
{
filterUsers.add(await formatUser(user));
}
});
return filterUsers;
}
答案 0 :(得分:1)
您错误地使用了map
。您需要为自己的用例使用filter(aka where
)和map
。
Future<List<User>> fetchUsers() async {
final List<User> usersFromRemote = await getUserFromRemote();
final List<User> filterUsers = await Future.wait(
usersFromRemote.where((u) => u.name != 'jim').map(
(user) async {
return formatUser(user);
},
),
);
return filterUsers;
}
或者您可以使用forEach
,但它的功能不是很好。
答案 1 :(得分:0)
使用forEach()代替map()
。根据{{3}},除非对map()
返回的可迭代对象进行迭代,否则将不调用转换函数。