flutter filter Stream<List<Obj>>

55 Views Asked by At

how can I do a filter on my jobs list in a stream I had a list of jobs in my ObjectBox db and I wanted to filter the stream list records according to my job type as per below code. I had search around for the function but never found 1 to work for my scenario. Any suggestion and solution are welcome and thanks in advance.

StreamController<List<Jobs>> streamController = BehaviorSubject();
Stream<List<Jobs>> populateJobs(String jType) {
  return streamController.stream;
  // .where((event) => event.
  //     .toList()
  //     .where((j) => j.transType.contains(TransTypeFilter)))
  // .toList();
}

Searched from google and Stackoverflow as per above code. The result is to filter the list by a property call TransType in the objects.

1

There are 1 best solutions below

1
choykarl On

You can use map+where.

class Test {
  int value;
  Test(this.value);

  @override
  String toString() {
    return '[Test($value)]';
  }
}

BehaviorSubject<List<Test>> streamController = BehaviorSubject();
streamController.stream.map((list) {
  // filter your value
  return list.where((test) => test.value == 1).toList();
}).listen((event) {
  print(event); // [Test(1), Test(1)]
});

streamController.add([Test(1), Test(2), Test(3), Test(1)]);