Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to filter a list of obseravble in rxdart

I am trying to implement bloc pattern in rxdart . I am trying to build todo app type of app . I implemented showing all items in list but what I want is not to show completed and uncompleted items in different part . However I am not able to filter the items based on completed on 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();
 }
}

What I wanted is to get the completed shoppingItems . The class ShoppingItem has a boolean property completed . I wanted to filter it on that basis .

Any help would be appricated thanks

like image 923
ashok poudel Avatar asked Dec 23 '22 01:12

ashok poudel


1 Answers

you can use where on the stream to filter out as per your need. Since you are observing list of item you need to map before filtering individual item. In our case it would be something like this.

 Observable<List<ShoppingItem>> get completedShoppingItems => 
    _shoppingItems.stream.map((itemList) =>
        itemList.where((item) => item.completed));
like image 168
umuieme Avatar answered Jan 12 '23 01:01

umuieme