Skip to content

Upgrading rxdart 0.16 to 0.17

Breaking0.16.7 → 0.17.0Breaking4New2Changed1Fixed1

BreakingUpgrade verdict

4 breaking changes.

  • 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.
Top 3 of 4 that need code or config changes
Breaking4
Makes the stream property on Observable private, avoiding API confusion and simplifying Subject implementation.
Observablestream
Explains the rationale for making stream private: avoids API confusion, simplifies Subject, and requires overriders to use a super constructor.
Subjectstream
Notes that simplifying Subject implementation is part of making the stream property private.
Subject
Requires code overriding the stream property to use a super constructor instead.
stream

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>