PackageTrack
Sign in Get early access

rxdart

RxDart is an implementation of the popular ReactiveX api for asynchronous programming, leveraging the native Dart Streams api.

0.28.0 5.0M downloads/mo #152 most downloaded on pub.dev ReactiveX/rxdart

What this package is like to depend on

Last release 2 years ago

no release in 18 months

Ships fairly regularly

a new release about every 3 months

Some releases are documented

notes for 68 of 120 stable releases

Nothing withdrawn

no release was ever pulled

11 years old

132 releases · first in 2015

0 releases in the last 12 months

see the full history below

Release timeline

132 releases · Oct 2015 to Jun 2024
2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026
Release Pre-release

Releases

latest 60 of 132
  1. 0.28.0 14 Jun 2024
    Release notes

    New

    • ValueStream:

      • Add lastEventOrNull getter to ValueStream,
        which returns the last emitted event (either data/value or error event), or null.
      • Add isLastEventValue, isLastEventError and errorAndStackTraceOrNull
        extension getters to ValueStream, to check the kind of the last emitted event is data/value or error.
      • Update documentation.
    • ReplayStream:

      • Add errorAndStackTraces to ReplayStream, which returns a list of emitted ErrorAndStackTraces.
    • Rename Notification and Kind to better reflect their purpose,
      and to avoid confusion with Flutter's Notification class.

      • Rename Notification to StreamNotification
        • Notification.onData to StreamNotification.data.
        • Notification.onDone to StreamNotification.done.
        • Notification.onError to StreamNotification.error.
      • Rename Kind to NotificationKind
        • Kind.onData to NotificationKind.data.
        • Kind.onError to NotificationKind.error.
        • Kind.onDone to NotificationKind.done.
      • Introduce DataNotification, ErrorNotification and DoneNotification as the subclasses of StreamNotification.
      • Convert isOnData, isOnError, isOnDone, requireData to extension getters on StreamNotification,
        they are now named isData, isError, isDone and requireDataValue.
      • Add extensions on StreamNotification: dataValueOrNull, requireErrorAndStackTrace, errorAndStackTraceOrNull getters and when method.

    Changed

    • Accept Dart SDK versions above 3.0.

    • switchMap: when cancelling the previous inner subscription,
      switchMap will pause the outer subscription and and wait for the inner subscription to be completely canceled.
      It will then resume the outer subscription, and listen to the next inner Stream.
      Any errors from canceling the previous inner subscription will now be forwarded to the resulting Stream.

    • Breaking: Rename ForkJoinStream.combine2..combine9 to ForkJoinStream.join2..join9.

    • Breaking: Rx.using/UsingStream

      • Convert all required positional parameters to required named parameters.
      • The disposer is now called after the future returned from StreamSubscription.cancel completes.

    Documentation

    Open source →
    Release notes

    New

    • ValueStream:

      • Add lastEventOrNull getter to ValueStream, which returns the last emitted event (either data/value or error event), or null.
      • Add isLastEventValue, isLastEventError and errorAndStackTraceOrNull extension getters to ValueStream, to check the kind of the last emitted event is data/value or error.
      • Update documentation.
    • ReplayStream:

      • Add errorAndStackTraces to ReplayStream, which returns a list of emitted ErrorAndStackTraces.
    • Rename Notification and Kind to better reflect their purpose, and to avoid confusion with Flutter's Notification class.

      • Rename Notification to StreamNotification
        • Notification.onData to StreamNotification.data.
        • Notification.onDone to StreamNotification.done.
        • Notification.onError to StreamNotification.error.
      • Rename Kind to NotificationKind
        • Kind.onData to NotificationKind.data.
        • Kind.onError to NotificationKind.error.
        • Kind.onDone to NotificationKind.done.
      • Introduce DataNotification, ErrorNotification and DoneNotification as the subclasses of StreamNotification.
      • Convert isOnData, isOnError, isOnDone, requireData to extension getters on StreamNotification, they are now named isData, isError, isDone and requireDataValue.
      • Add extensions on StreamNotification: dataValueOrNull, requireErrorAndStackTrace, errorAndStackTraceOrNull getters and when method.

    Changed

    • Accept Dart SDK versions above 3.0.

    • switchMap: when cancelling the previous inner subscription, switchMap will pause the outer subscription and and wait for the inner subscription to be completely canceled. It will then resume the outer subscription, and listen to the next inner Stream. Any errors from canceling the previous inner subscription will now be forwarded to the resulting Stream.

    • Breaking: Rename ForkJoinStream.combine2..combine9 to ForkJoinStream.join2..join9.

    • Breaking: Rx.using/UsingStream

      • Convert all required positional parameters to required named parameters.
      • The disposer is now called after the future returned from StreamSubscription.cancel completes.

    Documentation

    Open source →
  2. 0.28.0-dev.2 30 Mar 2024 pre-release
    Release notes

    Feedback on this change appreciated as this is a dev release before 0.28.0 stable!

    Changed

    • Breaking: Rename ForkJoinStream.combine2..combine9 to ForkJoinStream.join2..join9.
    • Breaking: Rx.using/UsingStream
      • Convert all required positional parameters to required named parameters.
      • The disposer is now called after the future returned from StreamSubscription.cancel completes.
    Open source →
    Release notes

    Feedback on this change appreciated as this is a dev release before 0.28.0 stable!

    Changed

    • Breaking: Rename ForkJoinStream.combine2..combine9 to ForkJoinStream.join2..join9.
    • Breaking: Rx.using/UsingStream
      • Convert all required positional parameters to required named parameters.
      • The disposer is now called after the future returned from StreamSubscription.cancel completes.
    Open source →
  3. 0.28.0-dev.1 27 Jan 2024 pre-release
    Release notes

    https://pub.dev/packages/rxdart/versions/0.28.0-dev.1

    Feedback on this change appreciated as this is a dev release before 0.28.0 stable!

    Changed

    • switchMap: when cancelling the previous inner subscription,
      switchMap will pause the outer subscription and and wait for the inner subscription to be completely canceled.
      It will then resume the outer subscription, and listen to the next inner Stream.
      Any errors from canceling the previous inner subscription will now be forwarded to the resulting Stream.

    Documentation

    • Replace deprecated "dart pub run" with "dart run" (thanks to @tatsuyafujisaki).

    What's Changed

    New Contributors

    Full Changelog: 0.28.0-dev.0...0.28.0-dev.1

    Open source →
    Release notes

    Feedback on this change appreciated as this is a dev release before 0.28.0 stable!

    Changed

    • switchMap: when cancelling the previous inner subscription, switchMap will pause the outer subscription and and wait for the inner subscription to be completely canceled. It will then resume the outer subscription, and listen to the next inner Stream. Any errors from canceling the previous inner subscription will now be forwarded to the resulting Stream.

    Documentation

    • Replace deprecated "dart pub run" with "dart run" (thanks to @tatsuyafujisaki).
    Open source →
  4. 0.28.0-dev.0 26 Jul 2023 pre-release
    Release notes

    https://pub.dev/packages/rxdart/versions/0.28.0-dev.0

    Feedback on this change appreciated as this is a dev release before 0.28.0 stable!

    New

    • ValueStream:

      • Add lastEventOrNull getter to ValueStream,
        which returns the last emitted event (either data/value or error event), or null.
      • Add isLastEventValue, isLastEventError and errorAndStackTraceOrNull
        extension getters to ValueStream, to check the kind of the last emitted event is data/value or error.
      • Update documentation.
    • ReplayStream:

      • Add errorAndStackTraces to ReplayStream, which returns a list of emitted ErrorAndStackTraces.
    • Rename Notification and Kind to better reflect their purpose,
      and to avoid confusion with Flutter's Notification class.

      • Rename Notification to StreamNotification
        • Notification.onData to StreamNotification.data.
        • Notification.onDone to StreamNotification.done.
        • Notification.onError to StreamNotification.error.
      • Rename Kind to NotificationKind
        • Kind.onData to NotificationKind.data.
        • Kind.onError to NotificationKind.error.
        • Kind.onDone to NotificationKind.done.
      • Introduce DataNotification, ErrorNotification and DoneNotification as the subclasses of StreamNotification.
      • Convert isOnData, isOnError, isOnDone, requireData to extension getters on StreamNotification,
        they are now named isData, isError, isDone and requireDataValue.
      • Add extensions on StreamNotification: dataValueOrNull, requireErrorAndStackTrace, errorAndStackTraceOrNull getters and when method.

    Changed

    • Accept Dart SDK versions above 3.0.

    Documentation


    What's Changed

    New Contributors

    Full Changelog: 0.27.7...0.28.0-dev.0

    Open source →
    Release notes

    Feedback on this change appreciated as this is a dev release before 0.28.0 stable!

    New

    • ValueStream:

      • Add lastEventOrNull getter to ValueStream, which returns the last emitted event (either data/value or error event), or null.
      • Add isLastEventValue, isLastEventError and errorAndStackTraceOrNull extension getters to ValueStream, to check the kind of the last emitted event is data/value or error.
      • Update documentation.
    • ReplayStream:

      • Add errorAndStackTraces to ReplayStream, which returns a list of emitted ErrorAndStackTraces.
    • Rename Notification and Kind to better reflect their purpose, and to avoid confusion with Flutter's Notification class.

      • Rename Notification to StreamNotification
        • Notification.onData to StreamNotification.data.
        • Notification.onDone to StreamNotification.done.
        • Notification.onError to StreamNotification.error.
      • Rename Kind to NotificationKind
        • Kind.onData to NotificationKind.data.
        • Kind.onError to NotificationKind.error.
        • Kind.onDone to NotificationKind.done.
      • Introduce DataNotification, ErrorNotification and DoneNotification as the subclasses of StreamNotification.
      • Convert isOnData, isOnError, isOnDone, requireData to extension getters on StreamNotification, they are now named isData, isError, isDone and requireDataValue.
      • Add extensions on StreamNotification: dataValueOrNull, requireErrorAndStackTrace, errorAndStackTraceOrNull getters and when method.

    Changed

    • Accept Dart SDK versions above 3.0.

    Documentation

    Open source →
  5. 0.27.7 16 Nov 2022
    Release notes

    https://pub.dev/packages/rxdart/versions/0.27.7

    Fixed

    • Subject
      • Only call onAdd and onError if the subject is not closed.
        This ensures BehaviorSubject and ReplaySubject do not update their values after they have been closed.

      • Subject.stream now returns a read-only Stream.
        Previously, Subject.stream was identical to the Subject, so we could add events to it, for example: (subject.stream as Sink<T>).add(event).
        This behavior is now disallowed, and will throw a TypeError if attempted. Use Subject.sink/Subject itself for adding events.

      • Change return type of ReplaySubject<T>.stream to ReplayStream<T>.

      • Internal refactoring of Subject.addStream.


    What's Changed

    • fix(subject): only call onAdd and onError if the subject is not closed by @hoc081098 in #698
    • refactor(subject): Subject.stream now returns a read-only Stream by @hoc081098 in #699
    • refactor(subject): addStream by @hoc081098 in #700
    • chore(publish): prepare for v0.27.7 by @hoc081098 in #701

    Full Changelog: 0.27.6...0.27.7

    Open source →
    Release notes

    Fixed

    • Subject
      • Only call onAdd and onError if the subject is not closed. This ensures BehaviorSubject and ReplaySubject do not update their values after they have been closed.

      • Subject.stream now returns a read-only Stream. Previously, Subject.stream was identical to the Subject, so we could add events to it, for example: (subject.stream as Sink<T>).add(event). This behavior is now disallowed, and will throw a TypeError if attempted. Use Subject.sink/Subject itself for adding events.

      • Change return type of ReplaySubject<T>.stream to ReplayStream<T>.

      • Internal refactoring of Subject.addStream.

    Open source →
  6. 0.27.6 11 Nov 2022
    Release notes

    https://pub.dev/packages/rxdart/versions/0.27.6

    • Rx.using/UsingStream: resourceFactory can now return a Future.
      This allows for asynchronous resource creation.

    • Rx.range/RangeStream: ensure RangeStream is only listened to once.


    What's Changed

    • fix(range): make sure RangeStream can only be listened to once by @hoc081098 in #690
    • fix(range): ensure RangeStream is only listened to once by @hoc081098 in #694
    • refactor(Rx.using): resourceFactory can return a Future by @hoc081098 in #696
    • chore(publish): prepare for v0.27.6 by @hoc081098 in #697

    Full Changelog: 0.27.5...0.27.6

    Open source →
    Release notes
    • Rx.using/UsingStream: resourceFactory can now return a Future. This allows for asynchronous resource creation.

    • Rx.range/RangeStream: ensure RangeStream is only listened to once.

    Open source →
  7. 0.27.5 16 Jul 2022
    Release notes

    https://pub.dev/packages/rxdart/versions/0.27.5

    Bug fixes

    • Fix issue #683: Throws runtime type error when using extension
      methods on a Stream<R> but its type annotation is Stream<T>, R is a subtype of T
      (covariance issue with StreamTransformer).

      Stream<num> s1 = Stream<int>.fromIterable([1, 2, 3]);
      // throws "type 'SwitchMapStreamTransformer<num, num>' is not a subtype of type 'StreamTransformer<int, num>' of 'streamTransformer'"
      s1.switchMap((v) => Stream.value(v));
      
      Stream<int?> s2 = Stream<int>.fromIterable([1, 2, 3]);
      // throws "type 'SwitchMapStreamTransformer<int?, int?>' is not a subtype of type 'StreamTransformer<int, int?>' of 'streamTransformer'"
      s2.switchMap((v) => Stream.value(v));

      Extension methods were previously implemented via stream.transform(streamTransformer), now
      via streamTransformer.bind(stream) to avoid this issue.

    • Fix concatEager: activeSubscription should be changed to next subscription.

    Code refactoring

    • Change return type of pairwise to Stream<List<T>>.

    What's Changed

    New Contributors

    Full Changelog: 0.27.4...0.27.5

    Open source →
    Release notes

    Bug fixes

    • Fix issue #683: Throws runtime type error when using extension methods on a Stream<R> but its type annotation is Stream<T>, R is a subtype of T (covariance issue with StreamTransformer).

      Stream<num> s1 = Stream<int>.fromIterable([1, 2, 3]);
      // throws "type 'SwitchMapStreamTransformer<num, num>' is not a subtype of type 'StreamTransformer<int, num>' of 'streamTransformer'"
      s1.switchMap((v) => Stream.value(v));
      
      Stream<int?> s2 = Stream<int>.fromIterable([1, 2, 3]);
      // throws "type 'SwitchMapStreamTransformer<int?, int?>' is not a subtype of type 'StreamTransformer<int, int?>' of 'streamTransformer'"
      s2.switchMap((v) => Stream.value(v));
      

      Extension methods were previously implemented via stream.transform(streamTransformer), now via streamTransformer.bind(stream) to avoid this issue.

    • Fix concatEager: activeSubscription should be changed to next subscription.

    Code refactoring

    • Change return type of pairwise to Stream<List<T>>.
    Open source →
  8. 0.27.4 29 May 2022
    Release notes

    https://pub.dev/packages/rxdart/versions/0.27.4

    Bug fixes

    • withLatestFrom should iterate over Iterable<Stream>s only once when the stream is listened to.
    • Fix analyzer warnings when using Dart 2.16.0.

    Features

    • Add mapNotNull/MapNotNullStreamTransformer.
    • Add whereNotNull/WhereNotNullStreamTransformer.

    Documentation


    What's Changed

    New Contributors

    Full Changelog: 0.27.3...0.27.4

    Open source →
    Release notes

    Bug fixes

    • withLatestFrom should iterate over Iterable<Stream> only once when the stream is listened to.
    • Fix analyzer warnings when using Dart 2.16.0.

    Features

    • Add mapNotNull/MapNotNullStreamTransformer.
    • Add whereNotNull/WhereNotNullStreamTransformer.

    Documentation

    Open source →
  9. 0.27.3 21 Nov 2021
    Release notes

    https://pub.dev/packages/rxdart/versions/0.27.3

    Bug fixes

    • flatMap now creates inner Streams lazily.
    • combineLatest, concat, concatEager, forkJoin, merge, race, zip iterate over Iterable<Stream>s only once
      when the stream is listened to.
    • Disallow mixing autoConnect, connect and refCount together, only one of them should be used.

    Features

    • Introduce AbstractConnectableStream, base class for the ConnectableStream implementations.
    • Improve CompositeSubscription (thanks to @BreX900)
      • CompositeSubscription's dispose, clear, and remove methods now return a completion future.
      • Fixed an issue where a stream not present in CompositeSubscription was canceled.
      • Added the ability not to cancel the stream when it is removed from CompositeSubscription.
      • CompositeSubscription implements StreamSubscription.
      • CompositeSubscription.add will throw a StateError instead of a String if this composite was disposed.

    Documentation

    • Fix Connectable examples.
    • Update Web example to null safety.
    • Fix Flutter example: SearchResultItem.fromJson type error (thanks to @WenYeh)

    Code refactoring

    • Simplify takeLast implementation.
    • Migrate from pedantic to lints and flutter_lints.
    • Refactor BehaviorSubject, ReplaySubject implementations by using "Sentinel object"s instead of ValueWrappers.

    New Contributors

    Full Changelog: 0.27.2...0.27.3

    Open source →
    Release notes

    Bug fixes

    • flatMap now creates inner Streams lazily.
    • combineLatest, concat, concatEager, forkJoin, merge, race, zip iterate over Iterable<Stream>s only once when the stream is listened to.
    • Disallow mixing autoConnect, connect and refCount together, only one of them should be used.

    Features

    • Introduce AbstractConnectableStream, base class for the ConnectableStream implementations.
    • Improve CompositeSubscription (thanks to @BreX900)
      • CompositeSubscription's dispose, clear, and remove methods now return a completion future.
      • Fixed an issue where a stream not present in CompositeSubscription was canceled.
      • Added the ability not to cancel the stream when it is removed from CompositeSubscription.
      • CompositeSubscription implements StreamSubscription.
      • CompositeSubscription.add will throw a StateError instead of a String if this composite was disposed.

    Documentation

    • Fix Connectable examples.
    • Update Web example to null safety.
    • Fix Flutter example: SearchResultItem.fromJson type error (thanks to @WenYeh)

    Code refactoring

    • Simplify takeLast implementation.
    • Migrate from pedantic to lints and flutter_lints.
    • Refactor BehaviorSubject, ReplaySubject implementations by using "Sentinel object"s instead of ValueWrappers.
    Open source →
  10. 0.27.2 03 Sep 2021
    Release notes

    Bug fixes

    • onErrorReturnWith now does not drop the remaining data events after the first error.
    • Disallow changing handlers of ConnectableStreamSubscription.

    Features

    • Add delayWhen operator.
    • Add optional parameter maxConcurrent to flatMap.
    • groupBy
      • Rename GroupByStream to GroupedStream.
      • Add optional parameter durationSelector, which used to determine how long each group should exist.
    • ignoreElements
      • Remove @deprecated annotation (ignoreElements should not be marked as deprecated).
      • Change return type to Stream<Never>.

    Documentation

    Code refactoring

    • Refactoring Stream Transformers, using Stream.multi internally.
    Open source →
  11. 0.27.1 30 May 2021
    Release notes
    • Bugfix: ForkJoinStream throws Null check operator used on a null value when using nullable-type.
    • Bugfix: delay operator
      • Pause and resume properly.
      • Cancel all timers after it has been cancelled.
    Open source →
  12. 0.27.0 07 May 2021
    Release notes
    • BREAKING: ValueStream
      • Remove ValueStreamExtensions.
      • ValueStream.valueWrapper becomes
        • value.
        • valueOrNull.
        • hasValue.
      • ValueStream.errorAndStackTrace becomes
        • error.
        • errorOrNull.
        • hasError.
        • stackTrace.
      • Add skipLast/SkipLastStreamTransformer (thanks @HannibalKcc).
      • Update scan: change seed to required param.
      • Add StackTrace param to recoveryFn when using OnErrorResumeStreamTransformer/onErrorResume/onErrorReturnWith.
      • Internal refactoring ConnectableStream.
    Open source →
  13. 0.26.0 27 Feb 2021
    Release notes
    • Stable, null-safe release.
      • Add takeLast (thanks @ThomasKliszowski).
      • Rework for retry/retryWhen:
        • Removed RetryError.
        • retry: emits all errors if retry fails.
        • retryWhen: emits original error, and error from factory if they are not identical.
        • streamFactory now accepts non-nullable StackTrace argument.
      • Update ValueStream.requireValue and ValueStream.requireError: throws actual error or a StateError, instead of throwing "Null check operator used on a null value" error.
    Open source →
  14. 0.26.0-nullsafety.1 08 Jan 2021 pre-release
    Release notes
    • Breaking change: ValueStream
      • Add valueWrapper to ValueStream.
      • Change value, hasValue, error and hasError to extension getters.
      • Fixed some API example documentation (thanks @HannibalKcc).
      • throttle/throttleTime have been optimised for performance.
      • Updated Flutter example to work with the latest Flutter stable.
    Open source →
  15. 0.26.0-nullsafety.0 24 Nov 2020 pre-release
    Release notes
    • Migrate this package to null safety.
      • Sdk constraints: >=2.12.0-0 <3.0.0 based on beta release guidelines.
    Open source →
  16. 0.25.0 06 Dec 2020
    Release notes
    • Sync behavior when using publishValueSeeded.
      • ValueStream, ReplayStream: exposes stackTrace along with the error:
        • Change ValueStream.error to ValueStream.errorAndStackTrace.
        • Change ReplayStream.errors to ReplayStream.errorAndStackTraces.
        • Merge Notification.error and Notification.stackTrace into Notification.errorAndStackTrace.
      • Bugfix: debounce/debounceTime unnecessarily kept too many elements in queue.
    Open source →
  17. 0.25.0-beta3 16 Oct 2020 pre-release
    Release notes
    • Bugfix: switchMap doesn't close after the last inner Stream closes.
      • Docs: updated URL for "Single-Subscription vs. Broadcast Streams" doc (thanks Aman Gupta).
      • Add FromCallableStream/Rx.fromCallable: allows you to create a Stream from a callable function.
      • Override BehaviorSubject's built-in operators to correct replaying the latest value of BehaviorSubject.
      • Bugfix: Source StreamSubscription doesn't cancel when cancelling refCount, zip, merge, concat StreamSubscription.
      • Forward done event of upstream to ConnectableStream.
    Open source →
  18. 0.25.0-beta2 24 Sep 2020 pre-release
    Release notes
    • Internal refactoring Stream Transformers.
      • Fixed RetryStream example documentation.
      • Error thrown from DeferStream factory will now be caught and converted to Stream.error.
      • doOnError now have strong type signature: Stream<T> doOnError(void Function(Object, StackTrace) onError).
      • Updated ForkJoinStream:
        • When any Stream emits an error, listening still continues unless cancelOnError: true on the downstream.
        • Pause and resume Streams properly.
      • Added UsingStream.
      • Updated TimerStream: Pause and resume Timer when pausing and resuming StreamSubscription.
    Open source →
  19. 0.25.0-beta 02 Aug 2020 pre-release
    Release notes
    • stream transformations on a ValueStream will also return a ValueStream, instead of a standard broadcast Stream
      • throttle can now be both leading and trailing
      • better handling of empty Lists when using operators that accept a List as input
      • error & hasError added to BehaviorSubject
      • various docs updates
      • note that this is a beta release, mainly because the behavior of transform has been adjusted (see first bullet) if all goes well, we'll release a proper 0.25.0 release soon
    Open source →
  20. 0.24.1 15 May 2020
    Release notes
    • Fix for BehaviorSubject, no longer emits null when using addStream and expecting an Error as first event (thanks yuvalr1)
      • min/max have been optimised for performance
      • Further refactors on our Transformers
    Open source →
  21. 0.24.0 14 Apr 2020
    Release notes
    • Fix throttle no longer outputting the current buffer onDone
      • Adds endWith and endWithMany
      • Fix when using pipe and an Error, Subjects would throw an Exception that couldn't be caught using onError
      • Updates links for docs (thanks @renefloor)
      • Fix links to correct marbles diagram for debounceTime (thanks @wheater)
      • Fix flakiness of withLatestFrom test Streams
      • Update to docs (@wheater)
      • Fix withLatestFrom not pause/resume/cancelling underlying Streams
      • Support sync behavior for Subjects
      • Add addTo extension for StreamSubscription, use it to easily add a subscription to a CompositeSubscription
      • Fix mergeWith and zipWith will return a broadcast Stream, if the source Stream is also broadcast
      • Fix concatWith will return a broadcast Stream, if the source Stream is also broadcast (thanks @jarekb123)
      • Adds pauseAll, resumeAll, ... to CompositeSubscription
      • Additionally, fixes some issues introduced with 0.24.0-dev.1
    Open source →
  22. 0.24.0-dev.1 10 Mar 2020 pre-release
    Release notes
    • Breaking: as of this release, we've refactored the way Stream transformers are set up. Previous releases had some incorrect behavior when using certain operators, for example:

      • startWith (startWithMany, startWithError) would incorrectly replay the starting event(s) when using a broadcast Stream at subscription time.

      • doOnX was not always producing the expected results:

        • doOnData did not output correct sequences on streams that were transformed multiple times in sequence.
        • doOnCancel now acts in the same manner onCancel works on regular subscriptions, i.e. it will now be called when all active subscriptions on a Stream are cancelled.
        • doOnListen will now call the first time the Stream is subscribed to, and will only call again after all subscribers have cancelled, before a new subscription starts.

        To properly fix this up, a new way of transforming Streams was introduced.
        Operators as of now use Stream.eventTransformed and we've refactored all operators to implement Sink instead.

      • Adds takeWileInclusive operator (thanks to @hoc081098)

      We encourage everyone to give the dev release(s) a spin and report back if anything breaks. If needed, a guide will be written to help migrate from the old behavior to the new behavior in certain common use cases.

      Keep in mind that we tend to stick as close as we can to how normal Dart Streams work!

    Open source →
  23. 0.23.1 13 Dec 2019
    Release notes
    • Fix API doc links in README
    Open source →
  24. 0.23.0 13 Dec 2019
    Release notes
    • Extension Methods replace Observable class!
      • Please upgrade existing code by using the rxdart_codemod package
      • Remove the Observable class. With extensions, you no longer need to wrap Streams in a [Stream]!
        • Convert all factories to static constructors to aid in discoverability of Stream classes
        • Move all factories to an Rx class.
        • Remove Observable.just, use Stream.value
        • Remove Observable.error, use Stream.error
        • Remove all tests that check base Stream methods
        • Subjects and *Observable classes extend Stream instead of base Observable
        • Rename *Observable to *Stream to reflect the fact they're just Streams.
          • ValueObservable -> ValueStream
          • ReplayObservable -> ReplayStream
          • ConnectableObservable -> ConnectableStream
          • ValueConnectableObservable -> ValueConnectableStream
          • ReplayConnectableObservable -> ReplayConnectableStream
      • All transformation methods removed from Observable class
        • Transformation methods are now Extensions of the Stream class
        • Any Stream can make use of the transformation methods provided by RxDart
        • Observable class remains in place with factory methods to create different types of Streams
        • Removed deprecated ofType method, use whereType instead
        • Deprecated concatMap, use standard Stream asyncExpand.
        • Removed AsObservableFuture, MinFuture, MaxFuture, and WrappedFuture
          • This removes asObservable method in chains
          • Use default asStream method from the base Future class instead.
          • min and max now implemented directly on the Stream class
    Open source →
  25. 0.23.0-dev.3 10 Dec 2019 pre-release
    Release notes
    • Fix missing exports:
      • ValueStream
      • ReplayStream
      • ConnectableStream
      • ValueConnectableStream
      • ReplayConnectableStream
    Open source →
  26. 0.23.0-dev.2 27 Nov 2019 pre-release
    Release notes
    • Remove the Observable class. With extensions, you no longer need to wrap Streams in a [Stream]!
      • Convert all factories to static constructors to aid in discoverability of Stream classes
      • Move all factories to an Rx class.
      • Remove Observable.just, use Stream.value
      • Remove Observable.error, use Stream.error
      • Remove all tests that check base Stream methods
      • Subjects and *Observable classes extend Stream instead of base Observable
      • Rename *Observable to *Stream to reflect the fact they're just Streams.
        • ValueObservable -> ValueStream
        • ReplayObservable -> ReplayStream
        • ConnectableObservable -> ConnectableStream
        • ValueConnectableObservable -> ValueConnectableStream
        • ReplayConnectableObservable -> ReplayConnectableStream
    Open source →
  27. 0.23.0-dev.1 19 Nov 2019 pre-release
    Release notes
    • Feedback on this change appreciated as this is a dev release before 0.23.0 stable!
      • All transformation methods removed from Observable class
        • Transformation methods are now Extensions of the Stream class
        • Any Stream can make use of the transformation methods provided by RxDart
      • Observable class remains in place with factory methods to create different types of Streams
      • Removed deprecated ofType method, use whereType instead
      • Deprecated concatMap, use standard Stream asyncExpand.
      • Removed AsObservableFuture, MinFuture, MaxFuture, and WrappedFuture
        • This removes asObservable method in chains
        • Use default asStream method from the base Future class instead.
        • min and max now implemented directly on the Stream class
    Open source →
  28. 0.22.6 06 Nov 2019
    Release notes
    • Bugfix: When listening multiple times to aBehaviorSubject that starts with an Error, it emits duplicate events.
      • Linter: public_member_api_docs is now used, we have added extra documentation where required.
    Open source →
  29. 0.22.5 01 Nov 2019
    Release notes
    • Bugfix: DeferStream created Stream too early
      • Bugfix: TimerStream created Timer too early
    Open source →
  30. 0.22.4 17 Oct 2019
    Release notes
    • Bugfix: switchMap controller no longer closes prematurely
    Open source →
  31. 0.22.3 04 Oct 2019
    Release notes
    • Bugfix: whereType failing in Flutter production builds only
    Open source →
  32. 0.22.2 26 Aug 2019
    Release notes
    • Bugfix: When using a seeded BehaviorSubject and adding an Error, upon listening, the BehaviorSubject emits null instead of the last Error.
      • Bugfix: calling cancel after a switchMap can cause a NoSuchMethodError.
      • Updated Flutter example to match the latest Flutter release
      • Observable.withLatestFrom is now expanded to accept 2 or more Streams thanks to Petrus Nguyễn Thái Học (@hoc081098)!
      • Deprecates ofType in favor of whereType, drop TypeToken.
    Open source →
  33. 0.22.1 23 Jul 2019
    Release notes

    Fixes following issues:

    • Erroneous behavior with scan and BehaviorSubject.
    • Bug where flatMap would cancel inner subscriptions in pause/resume.
    • Updates to make the current "pedantic" analyzer happy.
    Open source →
  34. 0.22.1+1 06 Aug 2019

    Nothing published for this version

  35. 0.22.0 03 May 2019
    Release notes

    This version includes refactoring for the backpressure operators:

    • Breaking Change: debounce is now split into debounce and debounceTime.
    • Breaking Change: sample is now split into sample and sampleTime.
    • Breaking Change: throttle is now split into throttle and throttleTime.
    Open source →
  36. 0.21.0 20 Feb 2019
    Release notes
    • Breaking Change: BehaviorSubject now has a separate factory constructor seeded() This allows you to seed this Subject with a null value.
      • Breaking Change: BehaviorSubject will now emit an Error, if the last event was also an Error. Before, when an Error occurred before a listen, the subscriber would not be notified of that Error. To refactor, simply change all occurences of BehaviorSubject(seedValue: value) to BehaviorSubject.seeded(value)
      • Added the groupBy operator
      • Bugix: doOnCancel: will now await the cancel result, if it is a Future.
      • Removed: bufferWithCount, windowWithCount, tween Please use bufferCount and windowCount, tween is removed, because it never was an official Rx spec.
      • Updated Flutter example to work with the latest Flutter stable.
    Open source →
  37. 0.20.0 12 Dec 2018
    Release notes
    • Breaking Change: bufferCount had buggy behavior when using startBufferEvery (was skip previously) If you were relying on bufferCount with skip greater than 1 before, then you may have noticed erroneous behavior.
      • Breaking Change: repeat is no longer an operator which simply repeats the last emitted event n-times, instead this is now an Observable factory method which takes a StreamFactory and a count parameter. This will cause each repeat cycle to create a fresh Observable sequence.
      • mapTo is a new operator, which works just like map, but instead of taking a mapper Function, it takes a single value where each event is mapped to.
      • Bugfix: switchIfEmpty now correctly calls onDone
      • combineLatest and zip can now take any amount of Streams:
        • combineLatest2-9 & zip2-9 functionality unchanged, but now use a new path for construction.
        • adds combineLatest and zipLatest which allows you to pass through an Iterable<Stream<T>> and a combiner that takes a List<T> when any source emits a change.
        • adds combineLatestList / zipList which allows you to take in an Iterable<Stream<T>> and emit a Observable<List<T>> with the values. Just a convenience factory if all you want is the list!
        • Constructors are provided by the Stream implementation directly
      • Bugfix: Subjects that are transformed will now correctly return a new Observable where isBroadcast is true (was false before)
      • Remove deprecated operators which were replaced long ago: bufferWithCount, windowWithCount, amb, flatMapLatest
    Open source →
  38. 0.19.0 12 Oct 2018
    Release notes
    • Breaking Change: Subjects onCancel function now returns void instead of Future to properly comply with the StreamController signature.
      • Bugfix: FlatMap operator properly calls onDone for all cases
      • Connectable Observable: An observable that can be listened to multiple times, and does not begin emitting values until the connect method is called
      • ValueObservable: A new interface that allows you to get the latest value emitted by an Observable.
        • Implemented by BehaviorSubject
        • Convert normal observables into ValueObservables via publishValue or shareValue
      • ReplayObservable: A new interface that allows you to get the values emitted by an Observable.
        • Implemented by ReplaySubject
        • Convert normal observables into ReplayObservables via publishReplay or shareReplay
    Open source →
  39. 0.18.1 03 Jul 2018
    Release notes
    • Add retryWhen operator. Thanks to Razvan Lung (@long1eu)! This can be used for custom retry logic.
    Open source →
  40. 0.18.0 19 Jun 2018
    Release notes
    • Breaking Change: remove retype method, deprecated as part of Dart 2.
    • Add flatMapIterable
    Open source →
  41. 0.17.0 07 Jun 2018
    Release notes
    • Breaking Change: stream property on Observable is now private.
      • Avoids API confusion
      • Simplifies Subject implementation
      • Require folks who are overriding the stream property to use a super constructor instead
    • Adds proper onPause and onResume handling for amb/race, combineLatest, concat, concat_eager, merge and zip
    • Add switchLatest operator
    • Add errors and stacktraces to RetryError class
    • Add onErrorResume and onErrorRetryWith operators. These allow folks to return a specific stream or value depending on the error that occurred.
    Open source →
  42. 0.16.7 02 May 2018
    Release notes
    • Fix new buffer and window implementation for Flutter + Dart 2
    • Subject now implements the Observable interface
    Open source →
  43. 0.16.6 02 Apr 2018
    Release notes
    • Rework for buffer and window, allow to schedule using a sampler
    • added buffer
    • added bufferFuture
    • added bufferTest
    • added bufferTime
    • added bufferWhen
    • added window
    • added windowFuture
    • added windowTest
    • added windowTime
    • added windowWhen
    • added onCount sampler for buffer and window
    • added onFuture sampler for buffer and window
    • added onTest sampler for buffer and window
    • added onTime sampler for buffer and window
    • added onStream sampler for buffer and window
    Open source →
  44. 0.16.5 30 Mar 2018
    Release notes
    • Renames amb to race
    • Renames flatMapLatest to switchMap
    • Renames bufferWithCount to bufferCount
    • Renames windowWithCount to windowCount
    Open source →
  45. 0.16.4 29 Mar 2018
    Release notes
    • Adds bufferTime transformer.
    • Adds windowTime transformer.
    Open source →
  46. 0.16.3 28 Mar 2018
    Release notes
    • Adds delay transformer.
    Open source →
  47. 0.16.2 28 Mar 2018
    Release notes
    • Fix added events to sink are not processed correctly by Subjects.
    Open source →
  48. 0.16.1 27 Mar 2018
    Release notes
    • Fix dematerialize method for Dart 2.
    Open source →
  49. 0.16.0 22 Feb 2018
    Release notes
    • breaks backwards compatibility, this release only works with Dart SDK >=2.0.0.
    • Removed old cast in favour of the now native Stream cast method.
    • Override retype to return an Observable.
    Open source →
  50. 0.16.0+1 23 Feb 2018
    Release notes
    • Update Changelog
    Open source →
  51. 0.16.0+2 19 Mar 2018
    Release notes
    • Add value to BehaviorSubject. Allows you to get the latest value emitted by the subject if it exists.
    • Add values to ReplayrSubject. Allows you to get the values stored by the subject if any exists.
    Open source →
  52. 0.15.1 21 Feb 2018
    Release notes
    • Add exhaustMap map to inner observable, ignore other values until that observable completes.
    • Improved code to be dartdevc compatible.
    • Add upper SDK version limit in pubspec
    Open source →
  53. 0.15.0 21 Nov 2017
    Release notes
    • Change debounce to emit the last item of the source stream as soon as the source stream completes.
    • Ensure debounce does not keep open any addition async timers after it has been cancelled.
    Open source →
  54. 0.14.0 19 Aug 2017
    Release notes
    • Add PublishSubject (thanks to @pauldemarco)
    • Fix bug with doOnX operators where callbacks were fired too often
    Open source →
  55. 0.14.0+1 06 Sep 2017
    Release notes
    • Change DoStreamTransformer to return a Future on cancel for api compatibility.
    Open source →
  56. 0.14.0+2 27 Oct 2017

    Nothing published for this version

  57. 0.13.1 30 Jun 2017
    Release notes
    • Fix error with FlatMapLatest where it was not properly cancelled in some scenarios
    • Remove additional async methods on Stream handlers unless they're shown to solve a problem
    Open source →
  58. 0.13.0 25 Jun 2017
    Release notes
    • Remove call operator / StreamTransformer entirely
    • Important bug fix: Errors thrown within any Stream or Operator will now be properly sent to the StreamSubscription.
    • Improve overall handling of errors throughout the library to ensure they're handled correctly
    Open source →
  59. 0.12.0 02 Jun 2017
    Release notes
    • Added doOn* operators in place of call.
    • Added DoStreamTransformer as a replacement for CallStreamTransformer
    • Deprecated call and CallStreamTransformer. Please use the appropriate doOnX operator / transformer.
    • Added distinctUnique. Emits items if they've never been emitted before. Same as to Rx#distinct.
    Open source →
  60. 0.11.0 25 May 2017
    Release notes
    • !!!Breaking Api Change!!!
      • Observable.groupBy has been removed in order to be compatible with the next version of the Stream class in Dart 1.24.0, which includes this method
    Open source →

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive