listen method

  1. @useResult
RemoveListener listen(
  1. void listener(
    1. AsyncPhase<T>
    )
)

Implementation

@useResult
RemoveListener listen(void Function(AsyncPhase<T>) listener) {
  // ignore: prefer_asserts_with_message
  assert(ChangeNotifier.debugAssertNotDisposed(this));

  _eventStreamController ??= StreamController<_Event<T>>.broadcast();
  final subscription = _eventStreamController?.stream.listen((event) {
    if (event.type != _EventType.end) {
      listener(event.phase);
    }
  });

  return () => subscription?.cancel();
}