如何使用Bloc Future Fetch Stream从后端过滤数据?

时间:2019-01-22 10:30:42

标签: flutter

我在欧盟上有这种方法

fetchProductAttribute(int _prodId) async {
List<ProductAttribute> productAttribute = await _repository.fetchProductAttribute(_prodId).catchError((err) => _fetcher.addError(err));
_fetcher.sink.add(productAttribute);
}

这将调用存储库,然后将api传递到后端。现在我要过滤这些数据。

我将对此进行修改,但无法正常工作。如何正确执行此操作?

fetchProductAttribute(int _prodId) async {
List<ProductAttribute> productAttribute = await _repository.fetchProductAttribute(_prodId).catchError((err) => _fetcher.addError(err));
for(var c in productAttribute){
  if(c.variant==true){
    _fetcher.sink.add(productAttribute);
  }
}
}

所有数据仍在继续...我只希望在屏幕上显示变量true的数据。该怎么做?

我看过一篇有关如何使用StreamSubscription herehere在Stream上进行过滤的文章,但这不是我想要的。我想从REST的早期版本中过滤掉。

1 个答案:

答案 0 :(得分:1)

正如一条评论所述,在列表上使用where运算符。

fetchProductAttribute(int _prodId) async {
    List<ProductAttribute> productAttribute = await _repository.fetchProductAttribute(_prodId).catchError((err) => _fetcher.addError(err));
    productAttribute = productAttribute.where((c) => c.variant == true).toList()
    _fetcher.sink.add(productAttribute);
}