Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 是否可以使用返回Future的函数筛选列表?_Flutter_Dart - Fatal编程技术网

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(项目)){
结果.添加(项目);
}
});