Upgrading rxdart 0.25 to 0.26
Breaking0.25.0 → 0.26.0Breaking3New1Changed7Other2
BreakingUpgrade verdict
3 breaking changes.
In plain terms
- Code that caught or referenced the RetryError type must be updated.
- Custom retry factories must now handle a stack trace that is never null.
- If you use ValueStream, some of its properties now come from extensions instead of the class itself, and a new valueWrapper property is added.
Must act 3 items need code or config changes
Dart SDK requirement changed in 0.26.0-nullsafety.0: >=2.6.0 <3.0.0 → >=2.12.0-0 <3.0.0.
What you must change
Breaking3
Removes
RetryError.RetryErrorstreamFactory now accepts a non-nullable StackTrace argument.streamFactoryStackTraceChanges ValueStream by adding valueWrapper and moving value, hasValue, error and hasError to extension getters.
ValueStreamValueStream.valueWrapperValueStream.valueValueStream.hasValueValueStream.errorValueStream.hasErrorAPI changes
Generated by DepDelta from published Dart source. Not mixed with prose notes.
- removed:
class RetryError extends Error - removed:
ctor RetryError.onReviveFailed(List<ErrorAndStackTrace> errors) - removed:
ctor RetryError.withCount(int count, List<ErrorAndStackTrace> errors) - removed:
field Notification.value: final T - removed:
field RetryError.errors: final List<ErrorAndStackTrace> - removed:
field RetryError.message: final String - removed:
field RetryWhenStream.retryWhenFactory: final RetryWhenStreamFactory - removed:
get BehaviorSubject.hasError: bool - removed:
get BehaviorSubject.hasValue: bool - removed:
get BehaviorSubject.value: T - removed:
get ValueConnectableStream.hasError: bool - removed:
get ValueConnectableStream.hasValue: bool - removed:
get ValueConnectableStream.value: T - removed:
get ValueStream.hasError: bool - removed:
get ValueStream.hasValue: bool - removed:
get ValueStream.value: T - removed:
method RetryError.toString(): String - removed:
set BehaviorSubject.value(T newValue) - removed:
typedef RetryWhenStreamFactory = Stream<void> Function( dynamic error, StackTrace stack) - changed:
ctor BehaviorSubject({ void Function() onListen, void Function() onCancel, bool sync = …, }) → ctor BehaviorSubject({ void Function()? onListen, void Function()? onCancel, bool sync = …, }) - changed:
ctor BehaviorSubject.seeded( T seedValue, { void Function() onListen, void Function() onCancel, bool sync = …, }) → ctor BehaviorSubject.seeded( T seedValue, { void Function()? onListen, void Function()? onCancel, bool sync = …, }) - changed:
ctor Notification.onError(Object error, StackTrace stackTrace) → ctor Notification.onError(Object error, StackTrace? stackTrace) - changed:
ctor PublishSubject( {void Function() onListen, void Function() onCancel, bool sync = …}) → ctor PublishSubject( {void Function()? onListen, void Function()? onCancel, bool sync = …}) - changed:
ctor ReplayConnectableStream(Stream<T> stream, {int maxSize, bool sync = …}) → ctor ReplayConnectableStream(Stream<T> stream, {int? maxSize, bool sync = …}) - changed:
ctor ReplaySubject({ int maxSize, void Function() onListen, void Function() onCancel, bool sync = …, }) → ctor ReplaySubject({ int? maxSize, void Function()? onListen, void Function()? onCancel, bool sync = …, }) - changed:
ctor SequenceEqualStream(Stream<S> stream, Stream<T> other, {bool Function(S s, T t) equals}) → ctor SequenceEqualStream( Stream<S> stream, Stream<T> other, { bool Function(S s, T t)? dataEquals, bool Function(ErrorAndStackTrace, ErrorAndStackTrace)? errorEquals, }) - changed:
field ErrorAndStackTrace.stackTrace: final StackTrace → field ErrorAndStackTrace.stackTrace: final StackTrace? - changed:
field Notification.errorAndStackTrace: final ErrorAndStackTrace → field Notification.errorAndStackTrace: final ErrorAndStackTrace? - changed:
field RepeatStream.count: final int → field RepeatStream.count: final int? - changed:
field RetryStream.count: int → field RetryStream.count: final int? - changed:
field ScanStreamTransformer.seed: final T → field ScanStreamTransformer.seed: final T? - changed:
get BehaviorSubject.errorAndStackTrace: ErrorAndStackTrace → get BehaviorSubject.errorAndStackTrace: ErrorAndStackTrace? - changed:
get Subject.onCancel: ControllerCancelCallback → get Subject.onCancel: ControllerCancelCallback? - changed:
get Subject.onListen: ControllerCallback → get Subject.onListen: ControllerCallback? - changed:
get ValueConnectableStream.errorAndStackTrace: ErrorAndStackTrace → get ValueConnectableStream.errorAndStackTrace: ErrorAndStackTrace? - changed:
get ValueStream.errorAndStackTrace: ErrorAndStackTrace → get ValueStream.errorAndStackTrace: ErrorAndStackTrace? - changed:
method BehaviorSubject.asyncExpand<E>(Stream<E> Function(T event) convert): ValueStream<E> → method BehaviorSubject.asyncExpand<E>(Stream<E>? Function(T event) convert): ValueStream<E> - changed:
method BehaviorSubject.createForwardingSubject<R>({ void Function() onListen, void Function() onCancel, bool sync = …, }): BehaviorSubject<R> → method BehaviorSubject.createForwardingSubject<R>({ void Function()? onListen, void Function()? onCancel, bool sync = …, }): BehaviorSubject<R> - changed:
method BehaviorSubject.distinct([bool Function(T previous, T next) equals]): ValueStream<T> → method BehaviorSubject.distinct([bool Function(T previous, T next)? equals]): ValueStream<T> - changed:
method BehaviorSubject.handleError(Function onError, {bool Function(Object error) test}): ValueStream<T> → method BehaviorSubject.handleError(Function onError, {bool Function(dynamic error)? test}): ValueStream<T> - changed:
method BehaviorSubject.onAddError(Object error, [StackTrace stackTrace]): void → method BehaviorSubject.onAddError(Object error, [StackTrace? stackTrace]): void - changed:
method BehaviorSubject.timeout(Duration timeLimit, {void Function(EventSink<T> sink) onTimeout}): ValueStream<T> → method BehaviorSubject.timeout(Duration timeLimit, {void Function(EventSink<T> sink)? onTimeout}): ValueStream<T> - changed:
method CompositeSubscription.pauseAll([Future<void> resumeSignal]): void → method CompositeSubscription.pauseAll([Future<void>? resumeSignal]): void - changed:
method ConcatEagerStream.listen(void Function(T event) onData, {Function onError, void Function() onDone, bool cancelOnError}): StreamSubscription<T> → method ConcatEagerStream.listen(void Function(T event)? onData, {Function? onError, void Function()? onDone, bool? cancelOnError}): StreamSubscription<T> - changed:
method ConcatStream.listen( void Function(T event) onData, { Function onError, void Function() onDone, bool cancelOnError, }): StreamSubscription<T> → method ConcatStream.listen(void Function(T event)? onData, {Function? onError, void Function()? onDone, bool? cancelOnError}): StreamSubscription<T> - changed:
method ConnectableStreamExtensions.publishReplay({int maxSize}): ReplayConnectableStream<T> → method ConnectableStreamExtensions.publishReplay({int? maxSize}): ReplayConnectableStream<T> - changed:
method ConnectableStreamExtensions.shareReplay({int maxSize}): ReplayStream<T> → method ConnectableStreamExtensions.shareReplay({int? maxSize}): ReplayStream<T> - changed:
method ConnectableStreamSubscription.asFuture<E>([E futureValue]): Future<E> → method ConnectableStreamSubscription.asFuture<E>([E? futureValue]): Future<E> - changed:
method ConnectableStreamSubscription.onData(void Function(T data) handleData): void → method ConnectableStreamSubscription.onData(void Function(T data)? handleData): void - changed:
method ConnectableStreamSubscription.onDone(void Function() handleDone): void → method ConnectableStreamSubscription.onDone(void Function()? handleDone): void - changed:
method ConnectableStreamSubscription.onError(Function handleError): void → method ConnectableStreamSubscription.onError(Function? handleError): void - changed:
method ConnectableStreamSubscription.pause([Future<void> resumeSignal]): void → method ConnectableStreamSubscription.pause([Future<void>? resumeSignal]): void - changed:
method DeferStream.listen(void Function(T event) onData, {Function onError, void Function() onDone, bool cancelOnError}): StreamSubscription<T> → method DeferStream.listen(void Function(T event)? onData, {Function? onError, void Function()? onDone, bool? cancelOnError}): StreamSubscription<T> - changed:
method DistinctUniqueExtension.distinctUnique({ bool Function(T e1, T e2) equals, int Function(T e) hashCode, }): Stream<T> → method DistinctUniqueExtension.distinctUnique({ bool Function(T e1, T e2)? equals, int Function(T e)? hashCode, }): Stream<T> - changed:
method DoExtensions.doOnCancel(void Function() onCancel): Stream<T> → method DoExtensions.doOnCancel(FutureOr<void> Function() onCancel): Stream<T> - changed:
method DoExtensions.doOnError(void Function(Object, StackTrace) onError): Stream<T> → method DoExtensions.doOnError(void Function(Object, StackTrace?) onError): Stream<T> - changed:
method DoStreamTransformer.Function(): dynamic → method DoStreamTransformer.Function(): FutureOr<void> - changed:
method DoStreamTransformer.Function(Object, StackTrace): void → method DoStreamTransformer.Function(Object, StackTrace?): void - changed:
method FromCallableStream.listen( void Function(T event) onData, { Function onError, void Function() onDone, bool cancelOnError, }): StreamSubscription<T> → method FromCallableStream.listen( void Function(T event)? onData, { Function? onError, void Function()? onDone, bool? cancelOnError, }): StreamSubscription<T> - changed:
method MaxExtension.max([Comparator<T> comparator]): Future<T> → method MaxExtension.max([Comparator<T>? comparator]): Future<T> - changed:
method MergeStream.listen(void Function(T event) onData, {Function onError, void Function() onDone, bool cancelOnError}): StreamSubscription<T> → method MergeStream.listen(void Function(T event)? onData, {Function? onError, void Function()? onDone, bool? cancelOnError}): StreamSubscription<T> - changed:
method MinExtension.min([Comparator<T> comparator]): Future<T> → method MinExtension.min([Comparator<T>? comparator]): Future<T> - changed:
method NeverStream.listen(void Function(T event) onData, {Function onError, void Function() onDone, bool cancelOnError}): StreamSubscription<T> → method NeverStream.listen(void Function(T event)? onData, {Function? onError, void Function()? onDone, bool? cancelOnError}): StreamSubscription<T> - changed:
method OnErrorExtensions.onErrorResume(Stream<T> Function(dynamic error) recoveryFn): Stream<T> → method OnErrorExtensions.onErrorResume(Stream<T> Function(Object error) recoveryFn): Stream<T> - changed:
method OnErrorExtensions.onErrorReturnWith(T Function(dynamic error) returnFn): Stream<T> → method OnErrorExtensions.onErrorReturnWith(T Function(Object error) returnFn): Stream<T> - changed:
method PublishConnectableStream.autoConnect({ void Function(StreamSubscription<T> subscription) connection, }): Stream<T> → method PublishConnectableStream.autoConnect({ void Function(StreamSubscription<T> subscription)? connection, }): Stream<T> - changed:
method PublishSubject.createForwardingSubject<R>({ void Function() onListen, void Function() onCancel, bool sync = …, }): PublishSubject<R> → method PublishSubject.createForwardingSubject<R>({ void Function()? onListen, void Function()? onCancel, bool sync = …, }): PublishSubject<R> - changed:
method RaceStream.listen(void Function(T event) onData, {Function onError, void Function() onDone, bool cancelOnError}): StreamSubscription<T> → method RaceStream.listen(void Function(T event)? onData, {Function? onError, void Function()? onDone, bool? cancelOnError}): StreamSubscription<T> - changed:
method RangeStream.listen(void Function(int event) onData, {Function onError, void Function() onDone, bool cancelOnError}): StreamSubscription<int> → method RangeStream.listen(void Function(int event)? onData, {Function? onError, void Function()? onDone, bool? cancelOnError}): StreamSubscription<int> - changed:
method RepeatStream.listen( void Function(T event) onData, { Function onError, void Function() onDone, bool cancelOnError, }): StreamSubscription<T> → method RepeatStream.listen(void Function(T event)? onData, {Function? onError, void Function()? onDone, bool? cancelOnError}): StreamSubscription<T> - changed:
method ReplayConnectableStream.autoConnect({ void Function(StreamSubscription<T> subscription) connection, }): ReplayStream<T> → method ReplayConnectableStream.autoConnect({ void Function(StreamSubscription<T> subscription)? connection, }): ReplayStream<T> - changed:
method ReplaySubject.createForwardingSubject<R>({ void Function() onListen, void Function() onCancel, bool sync = …, }): ReplaySubject<R> → method ReplaySubject.createForwardingSubject<R>({ void Function()? onListen, void Function()? onCancel, bool sync = …, }): ReplaySubject<R> - changed:
method ReplaySubject.onAddError(Object error, [StackTrace stackTrace]): void → method ReplaySubject.onAddError(Object error, [StackTrace? stackTrace]): void - changed:
method RetryStream.listen( void Function(T event) onData, { Function onError, void Function() onDone, bool cancelOnError, }): StreamSubscription<T> → method RetryStream.listen(void Function(T event)? onData, {Function? onError, void Function()? onDone, bool? cancelOnError}): StreamSubscription<T> - changed:
method RetryWhenStream.listen( void Function(T event) onData, { Function onError, void Function() onDone, bool cancelOnError, }): StreamSubscription<T> → method RetryWhenStream.listen(void Function(T event)? onData, {Function? onError, void Function()? onDone, bool? cancelOnError}): StreamSubscription<T> - changed:
method ScanExtension.scan<S>( S Function(S accumulated, T value, int index) accumulator, [ S seed, ]): Stream<S> → method ScanExtension.scan<S>( S Function(S? accumulated, T value, int index) accumulator, [ S? seed, ]): Stream<S> - changed:
method ScanStreamTransformer.Function(T accumulated, S value, int index): T → method ScanStreamTransformer.Function(T? accumulated, S value, int index): T - changed:
method SequenceEqualStream.listen(void Function(bool event) onData, {Function onError, void Function() onDone, bool cancelOnError}): StreamSubscription<bool> → method SequenceEqualStream.listen(void Function(bool event)? onData, {Function? onError, void Function()? onDone, bool? cancelOnError}): StreamSubscription<bool> - changed:
method Subject.addError(Object error, [StackTrace stackTrace]): void → method Subject.addError(Object error, [StackTrace? stackTrace]): void - changed:
method Subject.addStream(Stream<T> source, {bool cancelOnError = …}): Future<dynamic> → method Subject.addStream(Stream<T> source, {bool? cancelOnError}): Future<void> - changed:
method Subject.createForwardingSubject<R>({ void Function() onListen, void Function() onCancel, bool sync = …, }): Subject<R> → method Subject.createForwardingSubject<R>({ void Function()? onListen, void Function()? onCancel, bool sync = …, }): Subject<R> - changed:
method Subject.onAddError(Object error, [StackTrace stackTrace]): void → method Subject.onAddError(Object error, [StackTrace? stackTrace]): void - changed:
method SwitchLatestStream.listen( void Function(T event) onData, { Function onError, void Function() onDone, bool cancelOnError, }): StreamSubscription<T> → method SwitchLatestStream.listen(void Function(T event)? onData, {Function? onError, void Function()? onDone, bool? cancelOnError}): StreamSubscription<T> - changed:
method TimerStream.listen(void Function(T event) onData, {Function onError, void Function() onDone, bool cancelOnError}): StreamSubscription<T> → method TimerStream.listen(void Function(T event)? onData, {Function? onError, void Function()? onDone, bool? cancelOnError}): StreamSubscription<T> - changed:
method ValueConnectableStream.autoConnect({ void Function(StreamSubscription<T> subscription) connection, }): ValueStream<T> → method ValueConnectableStream.autoConnect({ void Function(StreamSubscription<T> subscription)? connection, }): ValueStream<T> - changed:
set Subject.onCancel(void Function() onCancelHandler) → set Subject.onCancel(void Function()? onCancelHandler) - changed:
set Subject.onListen(void Function() onListenHandler) → set Subject.onListen(void Function()? onListenHandler) - changed:
set Subject.onPause(void Function() onPauseHandler) → set Subject.onPause(void Function()? onPauseHandler) - changed:
set Subject.onResume(void Function() onResumeHandler) → set Subject.onResume(void Function()? onResumeHandler) - changed:
static method Rx.repeat<T>(Stream<T> Function(int repeatIndex) streamFactory, [int count]): Stream<T> → static method Rx.repeat<T>(Stream<T> Function(int repeatIndex) streamFactory, [int? count]): Stream<T> - changed:
static method Rx.retry<T>(Stream<T> Function() streamFactory, [int count]): Stream<T> → static method Rx.retry<T>(Stream<T> Function() streamFactory, [int? count]): Stream<T> - changed:
static method Rx.retryWhen<T>( Stream<T> Function() streamFactory, Stream<void> Function(dynamic error, StackTrace stack) retryWhenFactory, ): Stream<T> → static method Rx.retryWhen<T>( Stream<T> Function() streamFactory, Stream<void> Function(Object error, StackTrace stackTrace) retryWhenFactory, ): Stream<T> - changed:
static method Rx.sequenceEqual<A, B>(Stream<A> stream, Stream<B> other, {bool Function(A a, B b) equals}): Stream<bool> → static method Rx.sequenceEqual<A, B>( Stream<A> stream, Stream<B> other, { bool Function(A a, B b)? equals, bool Function(ErrorAndStackTrace, ErrorAndStackTrace)? errorEquals, }): Stream<bool> - added:
class TakeLastStreamTransformer<T> extends StreamTransformerBase<T, T> - added:
class ValueWrapper<T> - added:
ctor Notification(this.kind, this._value, this.errorAndStackTrace) - added:
ctor TakeLastStreamTransformer(this.count) - added:
ctor ValueWrapper(this.value) - added:
extension TakeLastExtension<T> on Stream<T> - added:
extension ValueStreamExtensions<T> on ValueStream<T> - added:
field TakeLastStreamTransformer.count: final int - added:
field ValueWrapper.value: final T - added:
get BehaviorSubject.valueWrapper: ValueWrapper<T>? - added:
get Notification.requireData: T - added:
get ValueConnectableStream.valueWrapper: ValueWrapper<T>? - added:
get ValueStream.valueWrapper: ValueWrapper<T>? - added:
get ValueStreamExtensions.error: Object? - added:
get ValueStreamExtensions.hasError: bool - added:
get ValueStreamExtensions.hasValue: bool - added:
get ValueStreamExtensions.requireError: Object - added:
get ValueStreamExtensions.requireValue: T - added:
get ValueStreamExtensions.value: T? - added:
get ValueWrapper.hashCode: int - added:
method RetryWhenStream.Function( Object error, StackTrace stackTrace, ): Stream<void> - added:
method TakeLastExtension.takeLast(int count): Stream<T> - added:
method TakeLastStreamTransformer.bind(Stream<T> stream): Stream<T> - added:
method ValueWrapper.operator ==(Object other): bool - added:
method ValueWrapper.toString(): String
- removed:
class RetryError extends Error - removed:
ctor RetryError.onReviveFailed(List<ErrorAndStackTrace> errors) - removed:
ctor RetryError.withCount(int count, List<ErrorAndStackTrace> errors) - removed:
field RetryError.errors: final List<ErrorAndStackTrace> - removed:
field RetryError.message: final String - removed:
field RetryWhenStream.retryWhenFactory: final RetryWhenStreamFactory - removed:
get ValueConnectableStream.hasError: bool - removed:
get ValueConnectableStream.hasValue: bool - removed:
get ValueConnectableStream.value: T - removed:
get ValueStream.hasError: bool - removed:
get ValueStream.hasValue: bool - removed:
get ValueStream.value: T - removed:
method RetryError.toString(): String - removed:
typedef RetryWhenStreamFactory = Stream<void> Function( dynamic error, StackTrace stack) - changed:
ctor ReplayConnectableStream(Stream<T> stream, {int maxSize, bool sync = …}) → ctor ReplayConnectableStream(Stream<T> stream, {int? maxSize, bool sync = …}) - changed:
ctor SequenceEqualStream(Stream<S> stream, Stream<T> other, {bool Function(S s, T t) equals}) → ctor SequenceEqualStream( Stream<S> stream, Stream<T> other, { bool Function(S s, T t)? dataEquals, bool Function(ErrorAndStackTrace, ErrorAndStackTrace)? errorEquals, }) - changed:
field RepeatStream.count: final int → field RepeatStream.count: final int? - changed:
field RetryStream.count: int → field RetryStream.count: final int? - changed:
get ValueConnectableStream.errorAndStackTrace: ErrorAndStackTrace → get ValueConnectableStream.errorAndStackTrace: ErrorAndStackTrace? - changed:
get ValueStream.errorAndStackTrace: ErrorAndStackTrace → get ValueStream.errorAndStackTrace: ErrorAndStackTrace? - changed:
method ConcatEagerStream.listen(void Function(T event) onData, {Function onError, void Function() onDone, bool cancelOnError}): StreamSubscription<T> → method ConcatEagerStream.listen(void Function(T event)? onData, {Function? onError, void Function()? onDone, bool? cancelOnError}): StreamSubscription<T> - changed:
method ConcatStream.listen( void Function(T event) onData, { Function onError, void Function() onDone, bool cancelOnError, }): StreamSubscription<T> → method ConcatStream.listen(void Function(T event)? onData, {Function? onError, void Function()? onDone, bool? cancelOnError}): StreamSubscription<T> - changed:
method ConnectableStreamExtensions.publishReplay({int maxSize}): ReplayConnectableStream<T> → method ConnectableStreamExtensions.publishReplay({int? maxSize}): ReplayConnectableStream<T> - changed:
method ConnectableStreamExtensions.shareReplay({int maxSize}): ReplayStream<T> → method ConnectableStreamExtensions.shareReplay({int? maxSize}): ReplayStream<T> - changed:
method ConnectableStreamSubscription.asFuture<E>([E futureValue]): Future<E> → method ConnectableStreamSubscription.asFuture<E>([E? futureValue]): Future<E> - changed:
method ConnectableStreamSubscription.onData(void Function(T data) handleData): void → method ConnectableStreamSubscription.onData(void Function(T data)? handleData): void - changed:
method ConnectableStreamSubscription.onDone(void Function() handleDone): void → method ConnectableStreamSubscription.onDone(void Function()? handleDone): void - changed:
method ConnectableStreamSubscription.onError(Function handleError): void → method ConnectableStreamSubscription.onError(Function? handleError): void - changed:
method ConnectableStreamSubscription.pause([Future<void> resumeSignal]): void → method ConnectableStreamSubscription.pause([Future<void>? resumeSignal]): void - changed:
method DeferStream.listen(void Function(T event) onData, {Function onError, void Function() onDone, bool cancelOnError}): StreamSubscription<T> → method DeferStream.listen(void Function(T event)? onData, {Function? onError, void Function()? onDone, bool? cancelOnError}): StreamSubscription<T> - changed:
method FromCallableStream.listen( void Function(T event) onData, { Function onError, void Function() onDone, bool cancelOnError, }): StreamSubscription<T> → method FromCallableStream.listen( void Function(T event)? onData, { Function? onError, void Function()? onDone, bool? cancelOnError, }): StreamSubscription<T> - changed:
method MergeStream.listen(void Function(T event) onData, {Function onError, void Function() onDone, bool cancelOnError}): StreamSubscription<T> → method MergeStream.listen(void Function(T event)? onData, {Function? onError, void Function()? onDone, bool? cancelOnError}): StreamSubscription<T> - changed:
method NeverStream.listen(void Function(T event) onData, {Function onError, void Function() onDone, bool cancelOnError}): StreamSubscription<T> → method NeverStream.listen(void Function(T event)? onData, {Function? onError, void Function()? onDone, bool? cancelOnError}): StreamSubscription<T> - changed:
method PublishConnectableStream.autoConnect({ void Function(StreamSubscription<T> subscription) connection, }): Stream<T> → method PublishConnectableStream.autoConnect({ void Function(StreamSubscription<T> subscription)? connection, }): Stream<T> - changed:
method RaceStream.listen(void Function(T event) onData, {Function onError, void Function() onDone, bool cancelOnError}): StreamSubscription<T> → method RaceStream.listen(void Function(T event)? onData, {Function? onError, void Function()? onDone, bool? cancelOnError}): StreamSubscription<T> - changed:
method RangeStream.listen(void Function(int event) onData, {Function onError, void Function() onDone, bool cancelOnError}): StreamSubscription<int> → method RangeStream.listen(void Function(int event)? onData, {Function? onError, void Function()? onDone, bool? cancelOnError}): StreamSubscription<int> - changed:
method RepeatStream.listen( void Function(T event) onData, { Function onError, void Function() onDone, bool cancelOnError, }): StreamSubscription<T> → method RepeatStream.listen(void Function(T event)? onData, {Function? onError, void Function()? onDone, bool? cancelOnError}): StreamSubscription<T> - changed:
method ReplayConnectableStream.autoConnect({ void Function(StreamSubscription<T> subscription) connection, }): ReplayStream<T> → method ReplayConnectableStream.autoConnect({ void Function(StreamSubscription<T> subscription)? connection, }): ReplayStream<T> - changed:
method RetryStream.listen( void Function(T event) onData, { Function onError, void Function() onDone, bool cancelOnError, }): StreamSubscription<T> → method RetryStream.listen(void Function(T event)? onData, {Function? onError, void Function()? onDone, bool? cancelOnError}): StreamSubscription<T> - changed:
method RetryWhenStream.listen( void Function(T event) onData, { Function onError, void Function() onDone, bool cancelOnError, }): StreamSubscription<T> → method RetryWhenStream.listen(void Function(T event)? onData, {Function? onError, void Function()? onDone, bool? cancelOnError}): StreamSubscription<T> - changed:
method SequenceEqualStream.listen(void Function(bool event) onData, {Function onError, void Function() onDone, bool cancelOnError}): StreamSubscription<bool> → method SequenceEqualStream.listen(void Function(bool event)? onData, {Function? onError, void Function()? onDone, bool? cancelOnError}): StreamSubscription<bool> - changed:
method SwitchLatestStream.listen( void Function(T event) onData, { Function onError, void Function() onDone, bool cancelOnError, }): StreamSubscription<T> → method SwitchLatestStream.listen(void Function(T event)? onData, {Function? onError, void Function()? onDone, bool? cancelOnError}): StreamSubscription<T> - changed:
method TimerStream.listen(void Function(T event) onData, {Function onError, void Function() onDone, bool cancelOnError}): StreamSubscription<T> → method TimerStream.listen(void Function(T event)? onData, {Function? onError, void Function()? onDone, bool? cancelOnError}): StreamSubscription<T> - changed:
method ValueConnectableStream.autoConnect({ void Function(StreamSubscription<T> subscription) connection, }): ValueStream<T> → method ValueConnectableStream.autoConnect({ void Function(StreamSubscription<T> subscription)? connection, }): ValueStream<T> - added:
extension ValueStreamExtensions<T> on ValueStream<T> - added:
get ValueConnectableStream.valueWrapper: ValueWrapper<T>? - added:
get ValueStream.valueWrapper: ValueWrapper<T>? - added:
get ValueStreamExtensions.error: Object? - added:
get ValueStreamExtensions.hasError: bool - added:
get ValueStreamExtensions.hasValue: bool - added:
get ValueStreamExtensions.requireError: Object - added:
get ValueStreamExtensions.requireValue: T - added:
get ValueStreamExtensions.value: T? - added:
method RetryWhenStream.Function( Object error, StackTrace stackTrace, ): Stream<void>
- removed:
get BehaviorSubject.hasError: bool - removed:
get BehaviorSubject.hasValue: bool - removed:
get BehaviorSubject.value: T - removed:
set BehaviorSubject.value(T newValue) - changed:
ctor BehaviorSubject({ void Function() onListen, void Function() onCancel, bool sync = …, }) → ctor BehaviorSubject({ void Function()? onListen, void Function()? onCancel, bool sync = …, }) - changed:
ctor BehaviorSubject.seeded( T seedValue, { void Function() onListen, void Function() onCancel, bool sync = …, }) → ctor BehaviorSubject.seeded( T seedValue, { void Function()? onListen, void Function()? onCancel, bool sync = …, }) - changed:
ctor PublishSubject( {void Function() onListen, void Function() onCancel, bool sync = …}) → ctor PublishSubject( {void Function()? onListen, void Function()? onCancel, bool sync = …}) - changed:
ctor ReplaySubject({ int maxSize, void Function() onListen, void Function() onCancel, bool sync = …, }) → ctor ReplaySubject({ int? maxSize, void Function()? onListen, void Function()? onCancel, bool sync = …, }) - changed:
get BehaviorSubject.errorAndStackTrace: ErrorAndStackTrace → get BehaviorSubject.errorAndStackTrace: ErrorAndStackTrace? - changed:
get Subject.onCancel: ControllerCancelCallback → get Subject.onCancel: ControllerCancelCallback? - changed:
get Subject.onListen: ControllerCallback → get Subject.onListen: ControllerCallback? - changed:
method BehaviorSubject.asyncExpand<E>(Stream<E> Function(T event) convert): ValueStream<E> → method BehaviorSubject.asyncExpand<E>(Stream<E>? Function(T event) convert): ValueStream<E> - changed:
method BehaviorSubject.createForwardingSubject<R>({ void Function() onListen, void Function() onCancel, bool sync = …, }): BehaviorSubject<R> → method BehaviorSubject.createForwardingSubject<R>({ void Function()? onListen, void Function()? onCancel, bool sync = …, }): BehaviorSubject<R> - changed:
method BehaviorSubject.distinct([bool Function(T previous, T next) equals]): ValueStream<T> → method BehaviorSubject.distinct([bool Function(T previous, T next)? equals]): ValueStream<T> - changed:
method BehaviorSubject.handleError(Function onError, {bool Function(Object error) test}): ValueStream<T> → method BehaviorSubject.handleError(Function onError, {bool Function(dynamic error)? test}): ValueStream<T> - changed:
method BehaviorSubject.onAddError(Object error, [StackTrace stackTrace]): void → method BehaviorSubject.onAddError(Object error, [StackTrace? stackTrace]): void - changed:
method BehaviorSubject.timeout(Duration timeLimit, {void Function(EventSink<T> sink) onTimeout}): ValueStream<T> → method BehaviorSubject.timeout(Duration timeLimit, {void Function(EventSink<T> sink)? onTimeout}): ValueStream<T> - changed:
method PublishSubject.createForwardingSubject<R>({ void Function() onListen, void Function() onCancel, bool sync = …, }): PublishSubject<R> → method PublishSubject.createForwardingSubject<R>({ void Function()? onListen, void Function()? onCancel, bool sync = …, }): PublishSubject<R> - changed:
method ReplaySubject.createForwardingSubject<R>({ void Function() onListen, void Function() onCancel, bool sync = …, }): ReplaySubject<R> → method ReplaySubject.createForwardingSubject<R>({ void Function()? onListen, void Function()? onCancel, bool sync = …, }): ReplaySubject<R> - changed:
method ReplaySubject.onAddError(Object error, [StackTrace stackTrace]): void → method ReplaySubject.onAddError(Object error, [StackTrace? stackTrace]): void - changed:
method Subject.addError(Object error, [StackTrace stackTrace]): void → method Subject.addError(Object error, [StackTrace? stackTrace]): void - changed:
method Subject.addStream(Stream<T> source, {bool cancelOnError = …}): Future<dynamic> → method Subject.addStream(Stream<T> source, {bool? cancelOnError}): Future<void> - changed:
method Subject.createForwardingSubject<R>({ void Function() onListen, void Function() onCancel, bool sync = …, }): Subject<R> → method Subject.createForwardingSubject<R>({ void Function()? onListen, void Function()? onCancel, bool sync = …, }): Subject<R> - changed:
method Subject.onAddError(Object error, [StackTrace stackTrace]): void → method Subject.onAddError(Object error, [StackTrace? stackTrace]): void - changed:
set Subject.onCancel(void Function() onCancelHandler) → set Subject.onCancel(void Function()? onCancelHandler) - changed:
set Subject.onListen(void Function() onListenHandler) → set Subject.onListen(void Function()? onListenHandler) - changed:
set Subject.onPause(void Function() onPauseHandler) → set Subject.onPause(void Function()? onPauseHandler) - changed:
set Subject.onResume(void Function() onResumeHandler) → set Subject.onResume(void Function()? onResumeHandler) - added:
get BehaviorSubject.valueWrapper: ValueWrapper<T>?
- changed:
field ScanStreamTransformer.seed: final T → field ScanStreamTransformer.seed: final T? - changed:
method DistinctUniqueExtension.distinctUnique({ bool Function(T e1, T e2) equals, int Function(T e) hashCode, }): Stream<T> → method DistinctUniqueExtension.distinctUnique({ bool Function(T e1, T e2)? equals, int Function(T e)? hashCode, }): Stream<T> - changed:
method DoExtensions.doOnCancel(void Function() onCancel): Stream<T> → method DoExtensions.doOnCancel(FutureOr<void> Function() onCancel): Stream<T> - changed:
method DoExtensions.doOnError(void Function(Object, StackTrace) onError): Stream<T> → method DoExtensions.doOnError(void Function(Object, StackTrace?) onError): Stream<T> - changed:
method DoStreamTransformer.Function(): dynamic → method DoStreamTransformer.Function(): FutureOr<void> - changed:
method DoStreamTransformer.Function(Object, StackTrace): void → method DoStreamTransformer.Function(Object, StackTrace?): void - changed:
method MaxExtension.max([Comparator<T> comparator]): Future<T> → method MaxExtension.max([Comparator<T>? comparator]): Future<T> - changed:
method MinExtension.min([Comparator<T> comparator]): Future<T> → method MinExtension.min([Comparator<T>? comparator]): Future<T> - changed:
method OnErrorExtensions.onErrorResume(Stream<T> Function(dynamic error) recoveryFn): Stream<T> → method OnErrorExtensions.onErrorResume(Stream<T> Function(Object error) recoveryFn): Stream<T> - changed:
method OnErrorExtensions.onErrorReturnWith(T Function(dynamic error) returnFn): Stream<T> → method OnErrorExtensions.onErrorReturnWith(T Function(Object error) returnFn): Stream<T> - changed:
method ScanExtension.scan<S>( S Function(S accumulated, T value, int index) accumulator, [ S seed, ]): Stream<S> → method ScanExtension.scan<S>( S Function(S? accumulated, T value, int index) accumulator, [ S? seed, ]): Stream<S> - changed:
method ScanStreamTransformer.Function(T accumulated, S value, int index): T → method ScanStreamTransformer.Function(T? accumulated, S value, int index): T - added:
class TakeLastStreamTransformer<T> extends StreamTransformerBase<T, T> - added:
ctor TakeLastStreamTransformer(this.count) - added:
extension TakeLastExtension<T> on Stream<T> - added:
field TakeLastStreamTransformer.count: final int - added:
method TakeLastExtension.takeLast(int count): Stream<T> - added:
method TakeLastStreamTransformer.bind(Stream<T> stream): Stream<T>