Skip to content

Upgrading rxdart 0.9 to 0.10

Breaking0.9.0 → 0.10.2Breaking8New2Changed1Fixed1Other3

BreakingUpgrade verdict

8 breaking changes.

  • Old ways of creating and combining streams are gone; use the newer constructors and numbered functions instead.
  • Use the Observable constructor instead of the old observable helper function.
  • The single combineLatest function is gone; pick the numbered version matching how many streams you combine.
  • The single zip function is gone; pick the numbered version matching how many streams you zip.
Top 3 of 8 that need code or config changes
Breaking8
Removes all deprecated methods, including the observable factory, combineLatest and zip.
observablecombineLatestzip
Removes the observable factory, replaced by the new Observable() constructor.
observableObservable
Removes combineLatest, replaced by Strong-Mode versions combineLatest2 through combineLatest9.
combineLatestcombineLatest2combineLatest9
Removes zip, replaced by Strong-Mode versions zip2 through zip9.
zipzip2zip9
Removes ConcatMapStreamTransformer; concatMap remains as an alias for asyncExpand.
ConcatMapStreamTransformerasyncExpandconcatMap
Renames BehaviourSubject to BehaviorSubject.
BehaviourSubjectBehaviorSubject
Max and Min now return a Future of the Max or Min value instead of a stream of values.
MaxMin
Subjects are now broadcast-only, in keeping with the Rx idea of Subjects.

Generated by DepDelta from published Dart source. Not mixed with prose notes.

  • added: class AsObservableFuture<T> extends WrappedFuture<T>
  • added: class StreamMaxFuture<T> extends WrappedFuture<T>
  • added: class StreamMinFuture<T> extends WrappedFuture<T>
  • added: class WrappedFuture<T> implements Future<T>
  • added: ctor AsObservableFuture(Future<T> wrapped)
  • added: ctor StreamMaxFuture(Stream<T> stream, [Comparator<T> comparator])
  • added: ctor StreamMinFuture(Stream<T> stream, [Comparator<T> comparator])
  • added: ctor WrappedFuture(this.wrapped)
  • added: field WrappedFuture.wrapped: final Future<T>
  • added: method AsObservableFuture.asObservable(): Observable<T>
  • added: method WrappedFuture.asStream(): Stream<T>
  • added: method WrappedFuture.catchError(Function onError, {bool test(Object error)}): Future<T>
  • added: method WrappedFuture.then<S>(FutureOr<S> onValue(T value), {Function onError}): Future<S>
  • added: method WrappedFuture.timeout(Duration timeLimit, {onTimeout()}): Future<T>
  • added: method WrappedFuture.whenComplete(action()): Future<T>
  • removed: class BehaviourSubject<T> implements StreamController<T>
  • removed: class ConcatMapStreamTransformer<T, S> implements StreamTransformer<T, S>
  • removed: class MaxStreamTransformer<T> implements StreamTransformer<T, T>
  • removed: class MinStreamTransformer<T> implements StreamTransformer<T, T>
  • removed: ctor BehaviourSubject( {void onListen(), void onPause(), void onResume(), onCancel(), bool sync = …})
  • removed: ctor BehaviourSubject.broadcast( {void onListen(), onCancel(), bool sync = …})
  • removed: ctor ConcatMapStreamTransformer(Stream<S> predicate(T value))
  • removed: ctor MaxStreamTransformer([this.compare])
  • removed: ctor MinStreamTransformer([this.compare])
  • removed: ctor Observable.combineLatest( Iterable<Stream<dynamic>> streams, Function predicate)
  • removed: ctor Observable.zip( Iterable<Stream<dynamic>> streams, Function predicate)
  • removed: ctor ReplaySubject.broadcast( {void onListen(), onCancel(), bool sync = …})
  • removed: field ConcatMapStreamTransformer.transformer: final StreamTransformer<T, S>
  • removed: field DeferStream.streamFactory: final StreamFactory<T>
  • removed: field MaxStreamTransformer.compare: final _MaxStreamTransformerCompare<T>
  • removed: field MinStreamTransformer.compare: final _MinStreamTransformerCompare<T>
  • removed: field ScanStreamTransformer.predicate: final _ScanStreamTransformerPredicate<T, S>
  • removed: function observable<S>(Stream<S> stream): Observable<S>
  • removed: get BehaviourSubject.done: Future<dynamic>
  • removed: get BehaviourSubject.hasListener: bool
  • removed: get BehaviourSubject.isClosed: bool
  • removed: get BehaviourSubject.isPaused: bool
  • removed: get BehaviourSubject.onCancel: ControllerCancelCallback
  • removed: get BehaviourSubject.onListen: ControllerCallback
  • removed: get BehaviourSubject.onPause: ControllerCallback
  • removed: get BehaviourSubject.onResume: ControllerCallback
  • removed: get BehaviourSubject.sink: StreamSink<T>
  • removed: get BehaviourSubject.stream: Observable<T>
  • removed: method BehaviourSubject.add(T event): void
  • removed: method BehaviourSubject.addError(Object error, [StackTrace stackTrace]): void
  • removed: method BehaviourSubject.addStream(Stream<T> source, {bool cancelOnError = …}): Future<dynamic>
  • removed: method BehaviourSubject.close(): Future<dynamic>
  • removed: method ConcatMapStreamTransformer.bind(Stream<T> stream): Stream<S>
  • removed: method MaxStreamTransformer.bind(Stream<T> stream): Stream<T>
  • removed: method MinStreamTransformer.bind(Stream<T> stream): Stream<T>
  • removed: set BehaviourSubject.onCancel(onCancelHandler())
  • removed: set BehaviourSubject.onListen(void onListenHandler())
  • removed: set BehaviourSubject.onPause(void onPauseHandler())
  • removed: set BehaviourSubject.onResume(void onResumeHandler())
  • changed: ctor CombineLatestStream(Iterable<Stream<dynamic>> streams, Function predicate) → ctor CombineLatestStream(Iterable<Stream<dynamic>> streams, Function combiner)
  • changed: ctor DeferStream(this.streamFactory) → ctor DeferStream(this._streamFactory, {bool reusable = …})
  • changed: ctor FlatMapLatestStreamTransformer(Stream<S> predicate(T value)) → ctor FlatMapLatestStreamTransformer(Stream<S> mapper(T value))
  • changed: ctor FlatMapStreamTransformer(Stream<S> predicate(T value)) → ctor FlatMapStreamTransformer(Stream<S> mapper(T value))
  • changed: ctor Observable.defer(Stream<T> streamFactory()) → ctor Observable.defer(Stream<T> streamFactory(), {bool reusable = …})
  • changed: ctor ReplaySubject( {void onListen(), void onPause(), void onResume(), onCancel(), bool sync = …}) → ctor ReplaySubject({this.maxSize, void onListen(), onCancel(), bool sync = …})
  • changed: ctor ScanStreamTransformer(this.predicate, [this.seed]) → ctor ScanStreamTransformer(this.accumulator, [this.seed])
  • changed: ctor ZipStream(Iterable<Stream<dynamic>> streams, Function predicate) → ctor ZipStream(Iterable<Stream<dynamic>> streams, Function zipper)
  • changed: field TimeInterval.interval: final int → field TimeInterval.interval: final Duration
  • changed: get Observable.first: Future<T> → get Observable.first: AsObservableFuture<T>
  • changed: get Observable.isEmpty: Future<bool> → get Observable.isEmpty: AsObservableFuture<bool>
  • changed: get Observable.last: Future<T> → get Observable.last: AsObservableFuture<T>
  • changed: get Observable.length: Future<int> → get Observable.length: AsObservableFuture<int>
  • changed: get Observable.single: Future<T> → get Observable.single: AsObservableFuture<T>
  • changed: method Observable.any(bool test(T element)): Future<bool> → method Observable.any(bool test(T element)): AsObservableFuture<bool>
  • changed: method Observable.asyncExpand<S>(Stream<S> convert(T value)): Observable<S> → method Observable.asyncExpand<S>(Stream<S> mapper(T value)): Observable<S>
  • changed: method Observable.concatMap<S>(Stream<S> predicate(T value)): Observable<S> → method Observable.concatMap<S>(Stream<S> mapper(T value)): Observable<S>
  • changed: method Observable.contains(Object needle): Future<bool> → method Observable.contains(Object needle): AsObservableFuture<bool>
  • changed: method Observable.drain<S>([S futureValue]): Future<S> → method Observable.drain<S>([S futureValue]): AsObservableFuture<S>
  • changed: method Observable.elementAt(int index): Future<T> → method Observable.elementAt(int index): AsObservableFuture<T>
  • changed: method Observable.every(bool test(T element)): Future<bool> → method Observable.every(bool test(T element)): AsObservableFuture<bool>
  • changed: method Observable.firstWhere(bool test(T element), {Object defaultValue()}): Future<dynamic> → method Observable.firstWhere(bool test(T element), {Object defaultValue()}): AsObservableFuture<dynamic>
  • changed: method Observable.flatMap<S>(Stream<S> predicate(T value)): Observable<S> → method Observable.flatMap<S>(Stream<S> mapper(T value)): Observable<S>
  • changed: method Observable.flatMapLatest<S>(Stream<S> predicate(T value)): Observable<S> → method Observable.flatMapLatest<S>(Stream<S> mapper(T value)): Observable<S>
  • changed: method Observable.fold<S>(S initialValue, S combine(S previous, T element)): Future<S> → method Observable.fold<S>( S initialValue, S combine(S previous, T element)): AsObservableFuture<S>
  • changed: method Observable.forEach(void action(T element)): Future<dynamic> → method Observable.forEach(void action(T element)): AsObservableFuture<dynamic>
  • changed: method Observable.join([String separator = …]): Future<String> → method Observable.join([String separator = …]): AsObservableFuture<String>
  • changed: method Observable.lastWhere(bool test(T element), {Object defaultValue()}): Future<dynamic> → method Observable.lastWhere(bool test(T element), {Object defaultValue()}): AsObservableFuture<dynamic>
  • changed: method Observable.max([int compare(T a, T b)]): Observable<T> → method Observable.max([Comparator<T> comparator]): AsObservableFuture<T>
  • changed: method Observable.min([int compare(T a, T b)]): Observable<T> → method Observable.min([Comparator<T> comparator]): AsObservableFuture<T>
  • changed: method Observable.pipe(StreamConsumer<T> streamConsumer): Future<dynamic> → method Observable.pipe(StreamConsumer<T> streamConsumer): AsObservableFuture<dynamic>
  • changed: method Observable.reduce(T combine(T previous, T element)): Future<T> → method Observable.reduce(T combine(T previous, T element)): AsObservableFuture<T>
  • changed: method Observable.scan<S>(S predicate(S accumulated, T value, int index), [S seed]): Observable<S> → method Observable.scan<S>(S accumulator(S accumulated, T value, int index), [S seed]): Observable<S>
  • changed: method Observable.singleWhere(bool test(T element)): Future<T> → method Observable.singleWhere(bool test(T element)): AsObservableFuture<T>
  • changed: method Observable.toList(): Future<List<T>> → method Observable.toList(): AsObservableFuture<List<T>>
  • changed: method Observable.toSet(): Future<Set<T>> → method Observable.toSet(): AsObservableFuture<Set<T>>
  • changed: method Observable.windowWithCount(int count, [int skip]): Observable<Observable<T>> → method Observable.windowWithCount(int count, [int skip]): Observable<Stream<T>>
  • changed: method Observable.zipWith<S, R>(Stream<S> other, R predicate(T t, S s)): Observable<R> → method Observable.zipWith<S, R>(Stream<S> other, R zipper(T t, S s)): Observable<R>
  • changed: static method CombineLatestStream.updateWithValues<T>(Function predicate, Iterable<dynamic> values, StreamController<T> controller): void → static method CombineLatestStream.updateWithValues<T>(Function combiner, Iterable<dynamic> values, StreamController<T> controller): void
  • changed: static method Observable.combineLatest2<A, B, T>( Stream<A> streamOne, Stream<B> streamTwo, T predicate(A a, B b)): Observable<T> → static method Observable.combineLatest2<A, B, T>( Stream<A> streamOne, Stream<B> streamTwo, T combiner(A a, B b)): Observable<T>
  • changed: static method Observable.combineLatest3<A, B, C, T>( Stream<A> streamOne, Stream<B> streamTwo, Stream<C> streamThree, T predicate(A a, B b, C c)): Observable<T> → static method Observable.combineLatest3<A, B, C, T>( Stream<A> streamOne, Stream<B> streamTwo, Stream<C> streamThree, T combiner(A a, B b, C c)): Observable<T>
  • changed: static method Observable.combineLatest4<A, B, C, D, T>( Stream<A> streamOne, Stream<B> streamTwo, Stream<C> streamThree, Stream<D> streamFour, T predicate(A a, B b, C c, D d)): Observable<T> → static method Observable.combineLatest4<A, B, C, D, T>( Stream<A> streamOne, Stream<B> streamTwo, Stream<C> streamThree, Stream<D> streamFour, T combiner(A a, B b, C c, D d)): Observable<T>
  • changed: static method Observable.combineLatest5<A, B, C, D, E, T>( Stream<A> streamOne, Stream<B> streamTwo, Stream<C> streamThree, Stream<D> streamFour, Stream<E> streamFive, T predicate(A a, B b, C c, D d, E e)): Observable<T> → static method Observable.combineLatest5<A, B, C, D, E, T>( Stream<A> streamOne, Stream<B> streamTwo, Stream<C> streamThree, Stream<D> streamFour, Stream<E> streamFive, T combiner(A a, B b, C c, D d, E e)): Observable<T>
  • changed: static method Observable.combineLatest6<A, B, C, D, E, F, T>( Stream<A> streamOne, Stream<B> streamTwo, Stream<C> streamThree, Stream<D> streamFour, Stream<E> streamFive, Stream<F> streamSix, T predicate(A a, B b, C c, D d, E e, F f)): Observable<T> → static method Observable.combineLatest6<A, B, C, D, E, F, T>( Stream<A> streamOne, Stream<B> streamTwo, Stream<C> streamThree, Stream<D> streamFour, Stream<E> streamFive, Stream<F> streamSix, T combiner(A a, B b, C c, D d, E e, F f)): Observable<T>
  • changed: static method Observable.combineLatest7<A, B, C, D, E, F, G, T>( Stream<A> streamOne, Stream<B> streamTwo, Stream<C> streamThree, Stream<D> streamFour, Stream<E> streamFive, Stream<F> streamSix, Stream<G> streamSeven, T predicate(A a, B b, C c, D d, E e, F f, G g)): Observable<T> → static method Observable.combineLatest7<A, B, C, D, E, F, G, T>( Stream<A> streamOne, Stream<B> streamTwo, Stream<C> streamThree, Stream<D> streamFour, Stream<E> streamFive, Stream<F> streamSix, Stream<G> streamSeven, T combiner(A a, B b, C c, D d, E e, F f, G g)): Observable<T>
  • changed: static method Observable.combineLatest8<A, B, C, D, E, F, G, H, T>( Stream<A> streamOne, Stream<B> streamTwo, Stream<C> streamThree, Stream<D> streamFour, Stream<E> streamFive, Stream<F> streamSix, Stream<G> streamSeven, Stream<H> streamEight, T predicate(A a, B b, C c, D d, E e, F f, G g, H h)): Observable<T> → static method Observable.combineLatest8<A, B, C, D, E, F, G, H, T>( Stream<A> streamOne, Stream<B> streamTwo, Stream<C> streamThree, Stream<D> streamFour, Stream<E> streamFive, Stream<F> streamSix, Stream<G> streamSeven, Stream<H> streamEight, T combiner(A a, B b, C c, D d, E e, F f, G g, H h)): Observable<T>
  • changed: static method Observable.combineLatest9<A, B, C, D, E, F, G, H, I, T>( Stream<A> streamOne, Stream<B> streamTwo, Stream<C> streamThree, Stream<D> streamFour, Stream<E> streamFive, Stream<F> streamSix, Stream<G> streamSeven, Stream<H> streamEight, Stream<I> streamNine, T predicate(A a, B b, C c, D d, E e, F f, G g, H h, I i)): Observable<T> → static method Observable.combineLatest9<A, B, C, D, E, F, G, H, I, T>( Stream<A> streamOne, Stream<B> streamTwo, Stream<C> streamThree, Stream<D> streamFour, Stream<E> streamFive, Stream<F> streamSix, Stream<G> streamSeven, Stream<H> streamEight, Stream<I> streamNine, T combiner(A a, B b, C c, D d, E e, F f, G g, H h, I i)): Observable<T>
  • changed: static method Observable.zip2<A, B, T>( Stream<A> streamOne, Stream<B> streamTwo, T predicate(A a, B b)): Observable<T> → static method Observable.zip2<A, B, T>( Stream<A> streamOne, Stream<B> streamTwo, T zipper(A a, B b)): Observable<T>
  • changed: static method Observable.zip3<A, B, C, T>( Stream<A> streamOne, Stream<B> streamTwo, Stream<C> streamThree, T predicate(A a, B b, C c)): Observable<T> → static method Observable.zip3<A, B, C, T>( Stream<A> streamOne, Stream<B> streamTwo, Stream<C> streamThree, T zipper(A a, B b, C c)): Observable<T>
  • changed: static method Observable.zip4<A, B, C, D, T>( Stream<A> streamOne, Stream<B> streamTwo, Stream<C> streamThree, Stream<D> streamFour, T predicate(A a, B b, C c, D d)): Observable<T> → static method Observable.zip4<A, B, C, D, T>( Stream<A> streamOne, Stream<B> streamTwo, Stream<C> streamThree, Stream<D> streamFour, T zipper(A a, B b, C c, D d)): Observable<T>
  • changed: static method Observable.zip5<A, B, C, D, E, T>( Stream<A> streamOne, Stream<B> streamTwo, Stream<C> streamThree, Stream<D> streamFour, Stream<E> streamFive, T predicate(A a, B b, C c, D d, E e)): Observable<T> → static method Observable.zip5<A, B, C, D, E, T>( Stream<A> streamOne, Stream<B> streamTwo, Stream<C> streamThree, Stream<D> streamFour, Stream<E> streamFive, T zipper(A a, B b, C c, D d, E e)): Observable<T>
  • changed: static method Observable.zip6<A, B, C, D, E, F, T>( Stream<A> streamOne, Stream<B> streamTwo, Stream<C> streamThree, Stream<D> streamFour, Stream<E> streamFive, Stream<F> streamSix, T predicate(A a, B b, C c, D d, E e, F f)): Observable<T> → static method Observable.zip6<A, B, C, D, E, F, T>( Stream<A> streamOne, Stream<B> streamTwo, Stream<C> streamThree, Stream<D> streamFour, Stream<E> streamFive, Stream<F> streamSix, T zipper(A a, B b, C c, D d, E e, F f)): Observable<T>
  • changed: static method Observable.zip7<A, B, C, D, E, F, G, T>( Stream<A> streamOne, Stream<B> streamTwo, Stream<C> streamThree, Stream<D> streamFour, Stream<E> streamFive, Stream<F> streamSix, Stream<G> streamSeven, T predicate(A a, B b, C c, D d, E e, F f, G g)): Observable<T> → static method Observable.zip7<A, B, C, D, E, F, G, T>( Stream<A> streamOne, Stream<B> streamTwo, Stream<C> streamThree, Stream<D> streamFour, Stream<E> streamFive, Stream<F> streamSix, Stream<G> streamSeven, T zipper(A a, B b, C c, D d, E e, F f, G g)): Observable<T>
  • changed: static method Observable.zip8<A, B, C, D, E, F, G, H, T>( Stream<A> streamOne, Stream<B> streamTwo, Stream<C> streamThree, Stream<D> streamFour, Stream<E> streamFive, Stream<F> streamSix, Stream<G> streamSeven, Stream<H> streamEight, T predicate(A a, B b, C c, D d, E e, F f, G g, H h)): Observable<T> → static method Observable.zip8<A, B, C, D, E, F, G, H, T>( Stream<A> streamOne, Stream<B> streamTwo, Stream<C> streamThree, Stream<D> streamFour, Stream<E> streamFive, Stream<F> streamSix, Stream<G> streamSeven, Stream<H> streamEight, T zipper(A a, B b, C c, D d, E e, F f, G g, H h)): Observable<T>
  • changed: static method Observable.zip9<A, B, C, D, E, F, G, H, I, T>( Stream<A> streamOne, Stream<B> streamTwo, Stream<C> streamThree, Stream<D> streamFour, Stream<E> streamFive, Stream<F> streamSix, Stream<G> streamSeven, Stream<H> streamEight, Stream<I> streamNine, T predicate(A a, B b, C c, D d, E e, F f, G g, H h, I i)): Observable<T> → static method Observable.zip9<A, B, C, D, E, F, G, H, I, T>( Stream<A> streamOne, Stream<B> streamTwo, Stream<C> streamThree, Stream<D> streamFour, Stream<E> streamFive, Stream<F> streamSix, Stream<G> streamSeven, Stream<H> streamEight, Stream<I> streamNine, T zipper(A a, B b, C c, D d, E e, F f, G g, H h, I i)): Observable<T>
  • changed: static method ZipStream.updateWithValues<T>(Function predicate, Iterable<dynamic> values, StreamController<T> controller): void → static method ZipStream.updateWithValues<T>(Function zipper, Iterable<dynamic> values, StreamController<T> controller): void
  • added: class AsObservableFuture<T> extends WrappedFuture<T>
  • added: class BehaviorSubject<T> implements StreamController<T>
  • added: class CastStreamTransformer<T, S> implements StreamTransformer<T, S>
  • added: class RetryError extends Error
  • added: class RetryStream<T> extends Stream<T>
  • added: class StreamMaxFuture<T> extends WrappedFuture<T>
  • added: class StreamMinFuture<T> extends WrappedFuture<T>
  • added: class WrappedFuture<T> implements Future<T>
  • added: ctor AsObservableFuture(Future<T> wrapped)
  • added: ctor BehaviorSubject({T seedValue, void onListen(), onCancel(), bool sync = …})
  • added: ctor CastStreamTransformer(TypeToken<S> typeToken)
  • added: ctor RetryError(int count)
  • added: ctor RetryStream(this.streamFactory, [this.count])
  • added: ctor StreamMaxFuture(Stream<T> stream, [Comparator<T> comparator])
  • added: ctor StreamMinFuture(Stream<T> stream, [Comparator<T> comparator])
  • added: ctor WrappedFuture(this.wrapped)
  • added: field CastStreamTransformer.transformer: final StreamTransformer<T, S>
  • added: field ReplaySubject.maxSize: int
  • added: field RetryError.message: final String
  • added: field RetryStream.controller: StreamController<T>
  • added: field RetryStream.count: int
  • added: field RetryStream.retryStep: int
  • added: field RetryStream.streamFactory: final StreamFactory<T>
  • added: field RetryStream.subscription: StreamSubscription<T>
  • added: field ScanStreamTransformer.accumulator: final _ScanStreamTransformerAccumulator<T, S>
  • added: field WrappedFuture.wrapped: final Future<T>
  • added: get BehaviorSubject.done: Future<dynamic>
  • added: get BehaviorSubject.hasListener: bool
  • added: get BehaviorSubject.isClosed: bool
  • added: get BehaviorSubject.isPaused: bool
  • added: get BehaviorSubject.onCancel: ControllerCancelCallback
  • added: get BehaviorSubject.onListen: ControllerCallback
  • added: get BehaviorSubject.onPause: ControllerCallback
  • added: get BehaviorSubject.onResume: ControllerCallback
  • added: get BehaviorSubject.sink: StreamSink<T>
  • added: get BehaviorSubject.stream: Observable<T>
  • added: method AsObservableFuture.asObservable(): Observable<T>
  • added: method BehaviorSubject.add(T event): void
  • added: method BehaviorSubject.addError(Object error, [StackTrace stackTrace]): void
  • added: method BehaviorSubject.addStream(Stream<T> source, {bool cancelOnError = …}): Future<dynamic>
  • added: method BehaviorSubject.close(): Future<dynamic>
  • added: method CastStreamTransformer.bind(Stream<T> stream): Stream<S>
  • added: method Observable.cast<S>(TypeToken<S> typeToken): Observable<S>
  • added: method RetryError.toString(): String
  • added: method RetryStream.listen(void onData(T event), {Function onError, void onDone(), bool cancelOnError}): StreamSubscription<T>
  • added: method RetryStream.retry(): void
  • added: method WrappedFuture.asStream(): Stream<T>
  • added: method WrappedFuture.catchError(Function onError, {bool test(Object error)}): Future<T>
  • added: method WrappedFuture.then<S>(FutureOr<S> onValue(T value), {Function onError}): Future<S>
  • added: method WrappedFuture.timeout(Duration timeLimit, {onTimeout()}): Future<T>
  • added: method WrappedFuture.whenComplete(action()): Future<T>
  • added: set BehaviorSubject.onCancel(onCancelHandler())
  • added: set BehaviorSubject.onListen(void onListenHandler())
  • added: set BehaviorSubject.onPause(void onPauseHandler())
  • added: set BehaviorSubject.onResume(void onResumeHandler())
  • removed: field DeferStream.streamFactory: final StreamFactory<T>
  • changed: ctor CombineLatestStream(Iterable<Stream<dynamic>> streams, Function predicate) → ctor CombineLatestStream(Iterable<Stream<dynamic>> streams, Function combiner)
  • changed: ctor DeferStream(this.streamFactory) → ctor DeferStream(this._streamFactory, {bool reusable = …})
  • changed: ctor ZipStream(Iterable<Stream<dynamic>> streams, Function predicate) → ctor ZipStream(Iterable<Stream<dynamic>> streams, Function zipper)
  • changed: static method CombineLatestStream.updateWithValues<T>(Function predicate, Iterable<dynamic> values, StreamController<T> controller): void → static method CombineLatestStream.updateWithValues<T>(Function combiner, Iterable<dynamic> values, StreamController<T> controller): void
  • changed: static method ZipStream.updateWithValues<T>(Function predicate, Iterable<dynamic> values, StreamController<T> controller): void → static method ZipStream.updateWithValues<T>(Function zipper, Iterable<dynamic> values, StreamController<T> controller): void
  • added: class RetryError extends Error
  • added: class RetryStream<T> extends Stream<T>
  • added: ctor RetryError(int count)
  • added: ctor RetryStream(this.streamFactory, [this.count])
  • added: field RetryError.message: final String
  • added: field RetryStream.controller: StreamController<T>
  • added: field RetryStream.count: int
  • added: field RetryStream.retryStep: int
  • added: field RetryStream.streamFactory: final StreamFactory<T>
  • added: field RetryStream.subscription: StreamSubscription<T>
  • added: method RetryError.toString(): String
  • added: method RetryStream.listen(void onData(T event), {Function onError, void onDone(), bool cancelOnError}): StreamSubscription<T>
  • added: method RetryStream.retry(): void
  • removed: class BehaviourSubject<T> implements StreamController<T>
  • removed: ctor BehaviourSubject( {void onListen(), void onPause(), void onResume(), onCancel(), bool sync = …})
  • removed: ctor BehaviourSubject.broadcast( {void onListen(), onCancel(), bool sync = …})
  • removed: ctor ReplaySubject.broadcast( {void onListen(), onCancel(), bool sync = …})
  • removed: get BehaviourSubject.done: Future<dynamic>
  • removed: get BehaviourSubject.hasListener: bool
  • removed: get BehaviourSubject.isClosed: bool
  • removed: get BehaviourSubject.isPaused: bool
  • removed: get BehaviourSubject.onCancel: ControllerCancelCallback
  • removed: get BehaviourSubject.onListen: ControllerCallback
  • removed: get BehaviourSubject.onPause: ControllerCallback
  • removed: get BehaviourSubject.onResume: ControllerCallback
  • removed: get BehaviourSubject.sink: StreamSink<T>
  • removed: get BehaviourSubject.stream: Observable<T>
  • removed: method BehaviourSubject.add(T event): void
  • removed: method BehaviourSubject.addError(Object error, [StackTrace stackTrace]): void
  • removed: method BehaviourSubject.addStream(Stream<T> source, {bool cancelOnError = …}): Future<dynamic>
  • removed: method BehaviourSubject.close(): Future<dynamic>
  • removed: set BehaviourSubject.onCancel(onCancelHandler())
  • removed: set BehaviourSubject.onListen(void onListenHandler())
  • removed: set BehaviourSubject.onPause(void onPauseHandler())
  • removed: set BehaviourSubject.onResume(void onResumeHandler())
  • changed: ctor ReplaySubject( {void onListen(), void onPause(), void onResume(), onCancel(), bool sync = …}) → ctor ReplaySubject({this.maxSize, void onListen(), onCancel(), bool sync = …})
  • added: class BehaviorSubject<T> implements StreamController<T>
  • added: ctor BehaviorSubject({T seedValue, void onListen(), onCancel(), bool sync = …})
  • added: field ReplaySubject.maxSize: int
  • added: get BehaviorSubject.done: Future<dynamic>
  • added: get BehaviorSubject.hasListener: bool
  • added: get BehaviorSubject.isClosed: bool
  • added: get BehaviorSubject.isPaused: bool
  • added: get BehaviorSubject.onCancel: ControllerCancelCallback
  • added: get BehaviorSubject.onListen: ControllerCallback
  • added: get BehaviorSubject.onPause: ControllerCallback
  • added: get BehaviorSubject.onResume: ControllerCallback
  • added: get BehaviorSubject.sink: StreamSink<T>
  • added: get BehaviorSubject.stream: Observable<T>
  • added: method BehaviorSubject.add(T event): void
  • added: method BehaviorSubject.addError(Object error, [StackTrace stackTrace]): void
  • added: method BehaviorSubject.addStream(Stream<T> source, {bool cancelOnError = …}): Future<dynamic>
  • added: method BehaviorSubject.close(): Future<dynamic>
  • added: set BehaviorSubject.onCancel(onCancelHandler())
  • added: set BehaviorSubject.onListen(void onListenHandler())
  • added: set BehaviorSubject.onPause(void onPauseHandler())
  • added: set BehaviorSubject.onResume(void onResumeHandler())
  • removed: class ConcatMapStreamTransformer<T, S> implements StreamTransformer<T, S>
  • removed: class MaxStreamTransformer<T> implements StreamTransformer<T, T>
  • removed: class MinStreamTransformer<T> implements StreamTransformer<T, T>
  • removed: ctor ConcatMapStreamTransformer(Stream<S> predicate(T value))
  • removed: ctor MaxStreamTransformer([this.compare])
  • removed: ctor MinStreamTransformer([this.compare])
  • removed: field ConcatMapStreamTransformer.transformer: final StreamTransformer<T, S>
  • removed: field MaxStreamTransformer.compare: final _MaxStreamTransformerCompare<T>
  • removed: field MinStreamTransformer.compare: final _MinStreamTransformerCompare<T>
  • removed: field ScanStreamTransformer.predicate: final _ScanStreamTransformerPredicate<T, S>
  • removed: method ConcatMapStreamTransformer.bind(Stream<T> stream): Stream<S>
  • removed: method MaxStreamTransformer.bind(Stream<T> stream): Stream<T>
  • removed: method MinStreamTransformer.bind(Stream<T> stream): Stream<T>
  • changed: ctor FlatMapLatestStreamTransformer(Stream<S> predicate(T value)) → ctor FlatMapLatestStreamTransformer(Stream<S> mapper(T value))
  • changed: ctor FlatMapStreamTransformer(Stream<S> predicate(T value)) → ctor FlatMapStreamTransformer(Stream<S> mapper(T value))
  • changed: ctor ScanStreamTransformer(this.predicate, [this.seed]) → ctor ScanStreamTransformer(this.accumulator, [this.seed])
  • changed: field TimeInterval.interval: final int → field TimeInterval.interval: final Duration
  • added: class CastStreamTransformer<T, S> implements StreamTransformer<T, S>
  • added: ctor CastStreamTransformer(TypeToken<S> typeToken)
  • added: field CastStreamTransformer.transformer: final StreamTransformer<T, S>
  • added: field ScanStreamTransformer.accumulator: final _ScanStreamTransformerAccumulator<T, S>
  • added: method CastStreamTransformer.bind(Stream<T> stream): Stream<S>