gameStream method
Implementation
@override
Stream<GameOrError> gameStream(PlayerID playerID, GameCode code) async* {
logger.info('Watching backend');
final ss = StreamController<GameOrError>();
final backendReader = NoServerClient.games[code]?.container;
backendReader?.listen<GameStateNotifier>(
BackendProviders.state.notifier,
(prev, curr) async {
ss.add(curr.gameState.gameValue());
// ignore: prefer_foreach
await for (final e in curr.stream) {
ss.add(e);
}
},
fireImmediately: true,
);
yield* ss.stream;
await ss.close();
}