4

rxdart にブロックパターンを実装しようとしています。todo app タイプの app をビルドしようとしています。リストにすべてのアイテムを表示するように実装しましたが、完成したアイテムと未完成のアイテムを別の部分に表示したくありません。ただし、 rxdart の完了に基づいてアイテムをフィルタリングすることはできません。

import 'package:rxdart/rxdart.dart';
import '../models/ShoppingItem.dart';
class ShoppingItemBloc {
  final _shoppingItems = BehaviorSubject<List<ShoppingItem>> 
(seedValue: []);

Observable<List<ShoppingItem>> get allShoppingItems => 
_shoppingItems.stream;

 //Getter to implement
 Observable<List<ShoppingItem>> get completedShoppingItems =>

 dispose() {
  _shoppingItems.close();
 }
}

私が欲しかったのは、完成した shoppingItems を取得することです。クラス ShoppingItem にはブール値のプロパティ completed があります。その上でフィルタリングしたかったのです。

どんな助けでも感謝します

4

1 に答える 1

10

ストリームのどこを使用して、必要に応じて除外できます。アイテムのリストを監視しているため、個々のアイテムをフィルタリングする前にマップする必要があります。私たちの場合、それはこのようなものになります。

 Observable<List<ShoppingItem>> get completedShoppingItems => 
    _shoppingItems.stream.map((itemList) =>
        itemList.where((item) => item.completed));
于 2019-02-03T07:08:06.827 に答える