Flutter 是否可以使用返回Future的函数筛选列表?
我有一个列表<代码>列表列表和一个函数<代码>未来我的过滤器(项目) 是否有办法使用未来返回函数Flutter 是否可以使用返回Future的函数筛选列表?,flutter,dart,Flutter,Dart,我有一个列表列表列表和一个函数未来我的过滤器(项目) 是否有办法使用未来返回函数myFilter()过滤我的列表 我们的想法是能够做到这样: final result=list.where((项)=>myFilter(项)).toList(); 但这是不可能的,因为where期望bool而不是Future尝试以下方法: final result = turnOffTime.map((item) { if(myFilter(item)) { return it
myFilter()
过滤我的列表
我们的想法是能够做到这样:
final result=list.where((项)=>myFilter(项)).toList();
但这是不可能的,因为where
期望bool
而不是Future
尝试以下方法:
final result = turnOffTime.map((item) {
if(myFilter(item)) {
return item;
}
}).toList();
你可以试试下面的方法:
1,转换列表=>流:
例如:
Stream.fromIterable([12, 23, 45, 40])
2、使用此功能创建未来列表
Future<List<int>> whereAsync(Stream<int> stream) async {
List<int> results = [];
await for (var data in stream) {
bool valid = await myFilter(data);
if (valid) {
results.add(data);
}
}
return results;
}
Future wheresync(流)异步{
列出结果=[];
等待(流中的var数据){
bool valid=等待myFilter(数据);
如果(有效){
结果:添加(数据);
}
}
返回结果;
}
由于迭代涉及异步操作,因此需要使用未来的
来执行迭代
final result = <Item>[];
await Future.forEach(list, (Item item) async {
if (await myFilter(item)) {
result.add(item);
}
});
最终结果=[];
等待未来。forEach(列表,(项目)异步{
如果(等待myFilter(项目)){
结果.添加(项目);
}
});