Upgrading rxdart 0.16 to 0.17
Breaking0.16.7 → 0.17.0Breaking4New2Changed1Fixed1
BreakingUpgrade verdict
4 breaking changes.
In plain terms
- Code that used or overrode Observable's `stream` property must change; subclasses should pass the stream through a `super` constructor instead.
- This is the reasoning behind the private `stream` change: it reduces confusion, simplifies Subject, and means subclasses should pass the stream via `super`.
- Making `stream` private also makes the Subject implementation simpler.
- If you overrode `stream` in a subclass, you now need to pass the stream through a `super` constructor.
Must act Top 3 of 4 that need code or config changes
What you must change
Breaking4
Makes the
stream property on Observable private, avoiding API confusion and simplifying Subject implementation.ObservablestreamExplains the rationale for making
stream private: avoids API confusion, simplifies Subject, and requires overriders to use a super constructor.SubjectstreamNotes that simplifying Subject implementation is part of making the
stream property private.SubjectRequires code overriding the
stream property to use a super constructor instead.streamAPI changes
Generated by DepDelta from published Dart source. Not mixed with prose notes.
- removed:
field Observable.stream: final Stream<T> - changed:
ctor Observable(this.stream) → ctor Observable(Stream<T> stream) - changed:
ctor RetryError(int count) → ctor RetryError(int count, this.errors) - changed:
method RetryStream.listen(void onData(T event), {Function onError, void onDone(), bool cancelOnError}): StreamSubscription<T> → method RetryStream.listen( void onData(T event), { Function onError, void onDone(), bool cancelOnError, }): StreamSubscription<T> - added:
class ErrorAndStacktrace - added:
class OnErrorResumeStreamTransformer<T> extends StreamTransformerBase<T, T> - added:
class Subject<T>: abstract extends Observable<T> implements StreamController<T> - added:
class SwitchLatestStream<T> extends Stream<T> - added:
ctor ErrorAndStacktrace(this.error, this.stacktrace) - added:
ctor Observable.switchLatest(Stream<Stream<T>> streams) - added:
ctor OnErrorResumeStreamTransformer(Stream<T> Function(dynamic error) recoveryFn) - added:
ctor Subject(StreamController<T> controller, Observable<T> observable) - added:
ctor SwitchLatestStream(this.streams) - added:
field ErrorAndStacktrace.error: final dynamic - added:
field ErrorAndStacktrace.stacktrace: final StackTrace - added:
field OnErrorResumeStreamTransformer.transformer: final StreamTransformer<T, T> - added:
field RetryError.errors: final List<ErrorAndStacktrace> - added:
field Subject.controller: final StreamController<T> - added:
field SwitchLatestStream.streams: final Stream<Stream<T>> - added:
get ErrorAndStacktrace.hashCode: int - added:
get Subject.done: Future<dynamic> - added:
get Subject.hasListener: bool - added:
get Subject.isClosed: bool - added:
get Subject.isPaused: bool - added:
get Subject.onCancel: ControllerCancelCallback - added:
get Subject.onListen: ControllerCallback - added:
get Subject.onPause: ControllerCallback - added:
get Subject.onResume: ControllerCallback - added:
get Subject.sink: StreamSink<T> - added:
get Subject.stream: Observable<T> - added:
method ErrorAndStacktrace.operator ==(Object other): bool - added:
method ErrorAndStacktrace.toString(): String - added:
method Observable.onErrorResume(Stream<T> Function(dynamic error) recoveryFn): Observable<T> - added:
method Observable.onErrorReturnWith(T Function(dynamic error) returnFn): Observable<T> - added:
method OnErrorResumeStreamTransformer.bind(Stream<T> stream): Stream<T> - added:
method Subject.add(T event): void - added:
method Subject.addError(Object error, [StackTrace stackTrace]): void - added:
method Subject.addStream(Stream<T> source, {bool cancelOnError = …}): Future<dynamic> - added:
method Subject.close(): Future<dynamic> - added:
method Subject.onAdd(T event): void - added:
method SwitchLatestStream.listen( void onData(T event), { Function onError, void onDone(), bool cancelOnError, }): StreamSubscription<T> - added:
set Subject.onCancel(void onCancelHandler()) - added:
set Subject.onListen(void onListenHandler()) - added:
set Subject.onPause(void onPauseHandler()) - added:
set Subject.onResume(void onResumeHandler())
- changed:
ctor RetryError(int count) → ctor RetryError(int count, this.errors) - changed:
method RetryStream.listen(void onData(T event), {Function onError, void onDone(), bool cancelOnError}): StreamSubscription<T> → method RetryStream.listen( void onData(T event), { Function onError, void onDone(), bool cancelOnError, }): StreamSubscription<T> - added:
class ErrorAndStacktrace - added:
class SwitchLatestStream<T> extends Stream<T> - added:
ctor ErrorAndStacktrace(this.error, this.stacktrace) - added:
ctor SwitchLatestStream(this.streams) - added:
field ErrorAndStacktrace.error: final dynamic - added:
field ErrorAndStacktrace.stacktrace: final StackTrace - added:
field RetryError.errors: final List<ErrorAndStacktrace> - added:
field SwitchLatestStream.streams: final Stream<Stream<T>> - added:
get ErrorAndStacktrace.hashCode: int - added:
method ErrorAndStacktrace.operator ==(Object other): bool - added:
method ErrorAndStacktrace.toString(): String - added:
method SwitchLatestStream.listen( void onData(T event), { Function onError, void onDone(), bool cancelOnError, }): StreamSubscription<T>
- added:
class Subject<T>: abstract extends Observable<T> implements StreamController<T> - added:
ctor Subject(StreamController<T> controller, Observable<T> observable) - added:
field Subject.controller: final StreamController<T> - added:
get Subject.done: Future<dynamic> - added:
get Subject.hasListener: bool - added:
get Subject.isClosed: bool - added:
get Subject.isPaused: bool - added:
get Subject.onCancel: ControllerCancelCallback - added:
get Subject.onListen: ControllerCallback - added:
get Subject.onPause: ControllerCallback - added:
get Subject.onResume: ControllerCallback - added:
get Subject.sink: StreamSink<T> - added:
get Subject.stream: Observable<T> - added:
method Subject.add(T event): void - added:
method Subject.addError(Object error, [StackTrace stackTrace]): void - added:
method Subject.addStream(Stream<T> source, {bool cancelOnError = …}): Future<dynamic> - added:
method Subject.close(): Future<dynamic> - added:
method Subject.onAdd(T event): void - added:
set Subject.onCancel(void onCancelHandler()) - added:
set Subject.onListen(void onListenHandler()) - added:
set Subject.onPause(void onPauseHandler()) - added:
set Subject.onResume(void onResumeHandler())
- added:
class OnErrorResumeStreamTransformer<T> extends StreamTransformerBase<T, T> - added:
ctor OnErrorResumeStreamTransformer(Stream<T> Function(dynamic error) recoveryFn) - added:
field OnErrorResumeStreamTransformer.transformer: final StreamTransformer<T, T> - added:
method OnErrorResumeStreamTransformer.bind(Stream<T> stream): Stream<T>