citiesStream method

  1. @override
Stream<MorrocanCity> citiesStream()

Returns a Stream of MorrocanCity of all cities in Morocco.

MoroccanCities.instance.citiesStream().listen((city) {
 print(city.id);
 print(city.name);
});

Implementation

@override
Stream<MorrocanCity> citiesStream() {
  final json =
      MorrocanCitiesUtils.fileContent("lib/src/core/data/cities.json");
  final receivePort = ReceivePort();

  Stream<MorrocanCity> stream = Isolate.spawn(
    MorrocanCitiesUtils.decodeAndModelizeCities,
    [receivePort.sendPort, json],
  )
      .asStream()
      .asyncExpand((_) => receivePort)
      .takeWhile((element) => element is MorrocanCity)
      .cast();

  return stream;
}