onReaderStatusChanged property

  1. @override
Stream<ReadiumReaderStatus> get onReaderStatusChanged
override

Fires whenever the reader status changes.

Like onTextLocatorChanged, the underlying event channel opts in to native-side buffering to avoid dropping the first status event.

Implementation

@override
Stream<ReadiumReaderStatus> get onReaderStatusChanged {
  _onReaderStatusChanged ??= readerStatusChannel.receiveBroadcastStream().map((dynamic event) {
    _log.i('Received reader status event: $event');
    try {
      return ReadiumReaderStatus.optFromString(json.decode(event) as String) ??
          ReadiumReaderStatus.optFromString(event) ??
          ReadiumReaderStatus.error;
    } on Exception catch (e) {
      _log.w('Error parsing reader status event: $e');
      return ReadiumReaderStatus.error;
    }
  }).asBroadcastStream();
  return _onReaderStatusChanged!;
}