onNarrationSyncChanged property

  1. @override
Stream<bool> get onNarrationSyncChanged
override

Stream emitting narration↔visual sync state changes. true = in sync (hide re-sync UI); false = user took manual control (show re-sync UI). Currently fired by comic (DiViNa) navigators; future: Media Overlay.

Implementation

@override
Stream<bool> get onNarrationSyncChanged {
  _onNarrationSyncChanged ??= narrationSyncChannel.receiveBroadcastStream().map((dynamic event) {
    if (event is bool) return event;
    try {
      return (json.decode(event as String) as bool?) ?? false;
    } on Exception catch (e) {
      _log.w('Error parsing narration sync event: $e');
      return false;
    }
  }).asBroadcastStream();
  return _onNarrationSyncChanged!;
}