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 2024Releases
latest 60 of 132-
0.28.014 Jun 2024Release notes
Open source →New
-
ValueStream:
- Add
lastEventOrNullgetter toValueStream,
which returns the last emitted event (either data/value or error event), ornull. - Add
isLastEventValue,isLastEventErroranderrorAndStackTraceOrNull
extension getters toValueStream, to check the kind of the last emitted event is data/value or error. - Update documentation.
- Add
-
ReplayStream:
- Add
errorAndStackTracestoReplayStream, which returns a list of emittedErrorAndStackTraces.
- Add
-
Rename
NotificationandKindto better reflect their purpose,
and to avoid confusion with Flutter's Notification class.- Rename
NotificationtoStreamNotificationNotification.onDatatoStreamNotification.data.Notification.onDonetoStreamNotification.done.Notification.onErrortoStreamNotification.error.
- Rename
KindtoNotificationKindKind.onDatatoNotificationKind.data.Kind.onErrortoNotificationKind.error.Kind.onDonetoNotificationKind.done.
- Introduce
DataNotification,ErrorNotificationandDoneNotificationas the subclasses ofStreamNotification. - Convert
isOnData,isOnError,isOnDone,requireDatato extension getters onStreamNotification,
they are now namedisData,isError,isDoneandrequireDataValue. - Add extensions on
StreamNotification:dataValueOrNull,requireErrorAndStackTrace,errorAndStackTraceOrNullgetters andwhenmethod.
- Rename
Changed
-
Accept Dart SDK versions above 3.0.
-
switchMap: when cancelling the previous inner subscription,
switchMapwill 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..combine9toForkJoinStream.join2..join9. -
Breaking:
Rx.using/UsingStream- Convert all required positional parameters to required named parameters.
- The
disposeris now called after the future returned fromStreamSubscription.cancelcompletes.
Documentation
- Update and fix documentation.
- Fix README example (thanks to @wurikiji).
- Update Flutter example (thanks to @hoangchungk53qx1).
- Replace deprecated "dart pub run" with "dart run" (thanks to @tatsuyafujisaki).
Release notes
Open source →New
-
ValueStream:
- Add
lastEventOrNullgetter toValueStream, which returns the last emitted event (either data/value or error event), ornull. - Add
isLastEventValue,isLastEventErroranderrorAndStackTraceOrNullextension getters toValueStream, to check the kind of the last emitted event is data/value or error. - Update documentation.
- Add
-
ReplayStream:
- Add
errorAndStackTracestoReplayStream, which returns a list of emittedErrorAndStackTraces.
- Add
-
Rename
NotificationandKindto better reflect their purpose, and to avoid confusion with Flutter's Notification class.- Rename
NotificationtoStreamNotificationNotification.onDatatoStreamNotification.data.Notification.onDonetoStreamNotification.done.Notification.onErrortoStreamNotification.error.
- Rename
KindtoNotificationKindKind.onDatatoNotificationKind.data.Kind.onErrortoNotificationKind.error.Kind.onDonetoNotificationKind.done.
- Introduce
DataNotification,ErrorNotificationandDoneNotificationas the subclasses ofStreamNotification. - Convert
isOnData,isOnError,isOnDone,requireDatato extension getters onStreamNotification, they are now namedisData,isError,isDoneandrequireDataValue. - Add extensions on
StreamNotification:dataValueOrNull,requireErrorAndStackTrace,errorAndStackTraceOrNullgetters andwhenmethod.
- Rename
Changed
-
Accept Dart SDK versions above 3.0.
-
switchMap: when cancelling the previous inner subscription,switchMapwill 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..combine9toForkJoinStream.join2..join9. -
Breaking:
Rx.using/UsingStream- Convert all required positional parameters to required named parameters.
- The
disposeris now called after the future returned fromStreamSubscription.cancelcompletes.
Documentation
- Update and fix documentation.
- Fix README example (thanks to @wurikiji).
- Update Flutter example (thanks to @hoangchungk53qx1).
- Replace deprecated "dart pub run" with "dart run" (thanks to @tatsuyafujisaki).
-
-
0.28.0-dev.230 Mar 2024 pre-releaseRelease notes
Open source →Feedback on this change appreciated as this is a dev release before 0.28.0 stable!
Changed
- Breaking: Rename
ForkJoinStream.combine2..combine9toForkJoinStream.join2..join9. - Breaking:
Rx.using/UsingStream- Convert all required positional parameters to required named parameters.
- The
disposeris now called after the future returned fromStreamSubscription.cancelcompletes.
Release notes
Open source →Feedback on this change appreciated as this is a dev release before 0.28.0 stable!
Changed
- Breaking: Rename
ForkJoinStream.combine2..combine9toForkJoinStream.join2..join9. - Breaking:
Rx.using/UsingStream- Convert all required positional parameters to required named parameters.
- The
disposeris now called after the future returned fromStreamSubscription.cancelcompletes.
- Breaking: Rename
-
0.28.0-dev.127 Jan 2024 pre-releaseRelease notes
Open source →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,
switchMapwill 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
- Replace deprecated "dart pub run" with "dart run" by @tatsuyafujisaki in #739
- switchMap: pause the outer subscription when cancelling the inner subscription, then resuming by @hoc081098 in #737
- Fix LICENSE by @hoc081098 in #741
- Update README.md [skip ci] by @hoc081098 in #742
- chore(publish): prepare for v0.28.0-dev.1 by @hoc081098 in #745
New Contributors
- @tatsuyafujisaki made their first contribution in #739
Full Changelog: 0.28.0-dev.0...0.28.0-dev.1
Release notes
Open source →Feedback on this change appreciated as this is a dev release before 0.28.0 stable!
Changed
switchMap: when cancelling the previous inner subscription,switchMapwill 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).
-
0.28.0-dev.026 Jul 2023 pre-releaseRelease notes
Open source →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
lastEventOrNullgetter toValueStream,
which returns the last emitted event (either data/value or error event), ornull. - Add
isLastEventValue,isLastEventErroranderrorAndStackTraceOrNull
extension getters toValueStream, to check the kind of the last emitted event is data/value or error. - Update documentation.
- Add
-
ReplayStream:
- Add
errorAndStackTracestoReplayStream, which returns a list of emittedErrorAndStackTraces.
- Add
-
Rename
NotificationandKindto better reflect their purpose,
and to avoid confusion with Flutter's Notification class.- Rename
NotificationtoStreamNotificationNotification.onDatatoStreamNotification.data.Notification.onDonetoStreamNotification.done.Notification.onErrortoStreamNotification.error.
- Rename
KindtoNotificationKindKind.onDatatoNotificationKind.data.Kind.onErrortoNotificationKind.error.Kind.onDonetoNotificationKind.done.
- Introduce
DataNotification,ErrorNotificationandDoneNotificationas the subclasses ofStreamNotification. - Convert
isOnData,isOnError,isOnDone,requireDatato extension getters onStreamNotification,
they are now namedisData,isError,isDoneandrequireDataValue. - Add extensions on
StreamNotification:dataValueOrNull,requireErrorAndStackTrace,errorAndStackTraceOrNullgetters andwhenmethod.
- Rename
Changed
- Accept Dart SDK versions above 3.0.
Documentation
- Update and fix documentation.
- Fix README example (thanks to @wurikiji).
- Update Flutter example (thanks to @hoangchungk53qx1).
What's Changed
- docs(using): fix typo by @hoc081098 in #704
- improve
Notification.toString(), add tests for Notifications by @hoc081098 in #703 - fix example on README by @wurikiji in #712
- Create .github/dependabot.yml by @hoc081098 in #714
- update example github_search by @hoangchungk53qx1 in #717
- Fix lints and accept Dart SDK versions above 3.0 by @hoc081098 in #721
- feat(ValueStream): add lastEventOrNull, isLastEventValue, isLastEventError, errorAndStackTraceOrNull by @hoc081098 in #729
- refactor(utils): rename Notification to StreamNotification, Kind to NotificationKind by @hoc081098 in #731
- docs: update docs by @hoc081098 in #733
- chore(publish): prepare for v0.28.0-dev.0 by @hoc081098 in #734
New Contributors
- @wurikiji made their first contribution in #712
- @hoangchungk53qx1 made their first contribution in #717
Full Changelog: 0.27.7...0.28.0-dev.0
Release notes
Open source →Feedback on this change appreciated as this is a dev release before 0.28.0 stable!
New
-
ValueStream:
- Add
lastEventOrNullgetter toValueStream, which returns the last emitted event (either data/value or error event), ornull. - Add
isLastEventValue,isLastEventErroranderrorAndStackTraceOrNullextension getters toValueStream, to check the kind of the last emitted event is data/value or error. - Update documentation.
- Add
-
ReplayStream:
- Add
errorAndStackTracestoReplayStream, which returns a list of emittedErrorAndStackTraces.
- Add
-
Rename
NotificationandKindto better reflect their purpose, and to avoid confusion with Flutter's Notification class.- Rename
NotificationtoStreamNotificationNotification.onDatatoStreamNotification.data.Notification.onDonetoStreamNotification.done.Notification.onErrortoStreamNotification.error.
- Rename
KindtoNotificationKindKind.onDatatoNotificationKind.data.Kind.onErrortoNotificationKind.error.Kind.onDonetoNotificationKind.done.
- Introduce
DataNotification,ErrorNotificationandDoneNotificationas the subclasses ofStreamNotification. - Convert
isOnData,isOnError,isOnDone,requireDatato extension getters onStreamNotification, they are now namedisData,isError,isDoneandrequireDataValue. - Add extensions on
StreamNotification:dataValueOrNull,requireErrorAndStackTrace,errorAndStackTraceOrNullgetters andwhenmethod.
- Rename
Changed
- Accept Dart SDK versions above 3.0.
Documentation
- Update and fix documentation.
- Fix README example (thanks to @wurikiji).
- Update Flutter example (thanks to @hoangchungk53qx1).
-
-
0.27.716 Nov 2022Release notes
Open source →https://pub.dev/packages/rxdart/versions/0.27.7
Fixed
Subject-
Only call
onAddandonErrorif the subject is not closed.
This ensuresBehaviorSubjectandReplaySubjectdo not update their values after they have been closed. -
Subject.streamnow returns a read-onlyStream.
Previously,Subject.streamwas identical to theSubject, so we could add events to it, for example:(subject.stream as Sink<T>).add(event).
This behavior is now disallowed, and will throw aTypeErrorif attempted. UseSubject.sink/Subjectitself for adding events. -
Change return type of
ReplaySubject<T>.streamtoReplayStream<T>. -
Internal refactoring of
Subject.addStream.
-
What's Changed
- fix(subject): only call
onAddandonErrorif the subject is not closed by @hoc081098 in #698 - refactor(subject):
Subject.streamnow returns a read-onlyStreamby @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
Release notes
Open source →Fixed
Subject-
Only call
onAddandonErrorif the subject is not closed. This ensuresBehaviorSubjectandReplaySubjectdo not update their values after they have been closed. -
Subject.streamnow returns a read-onlyStream. Previously,Subject.streamwas identical to theSubject, so we could add events to it, for example:(subject.stream as Sink<T>).add(event). This behavior is now disallowed, and will throw aTypeErrorif attempted. UseSubject.sink/Subjectitself for adding events. -
Change return type of
ReplaySubject<T>.streamtoReplayStream<T>. -
Internal refactoring of
Subject.addStream.
-
-
0.27.611 Nov 2022Release notes
Open source →https://pub.dev/packages/rxdart/versions/0.27.6
-
Rx.using/UsingStream:resourceFactorycan now return aFuture.
This allows for asynchronous resource creation. -
Rx.range/RangeStream: ensureRangeStreamis only listened to once.
What's Changed
- fix(range): make sure
RangeStreamcan 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):
resourceFactorycan 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
Release notes
Open source →-
Rx.using/UsingStream:resourceFactorycan now return aFuture. This allows for asynchronous resource creation. -
Rx.range/RangeStream: ensureRangeStreamis only listened to once.
-
-
0.27.516 Jul 2022Release notes
Open source →https://pub.dev/packages/rxdart/versions/0.27.5
Bug fixes
-
Fix issue #683: Throws runtime type error when using extension
methods on aStream<R>but its type annotation isStream<T>,Ris a subtype ofT
(covariance issue withStreamTransformer).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
viastreamTransformer.bind(stream)to avoid this issue. -
Fix
concatEager:activeSubscriptionshould be changed to next subscription.
Code refactoring
- Change return type of
pairwisetoStream<List<T>>.
What's Changed
- Fix ConcatEagerStream bug by @Stitch-Taotao in #682
- Fix #683 by @hoc081098 in #684
- refactor(pairwise): change return type of pairwise to Stream<List> by @hoc081098 in #685
- Update CHANGELOG.md by @hoc081098 in #686
- prepare for v0.27.5 by @hoc081098 in #688
New Contributors
- @Stitch-Taotao made their first contribution in #682
Full Changelog: 0.27.4...0.27.5
Release notes
Open source →Bug fixes
-
Fix issue #683: Throws runtime type error when using extension methods on a
Stream<R>but its type annotation isStream<T>,Ris a subtype ofT(covariance issue withStreamTransformer).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 viastreamTransformer.bind(stream)to avoid this issue. -
Fix
concatEager:activeSubscriptionshould be changed to next subscription.
Code refactoring
- Change return type of
pairwisetoStream<List<T>>.
-
-
0.27.429 May 2022Release notes
Open source →https://pub.dev/packages/rxdart/versions/0.27.4
Bug fixes
withLatestFromshould iterate overIterable<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
- Fix grammar errors in code examples (thanks to @fzyzcjy).
- Update RxMarbles URL for
RaceStream(thanks to @Péter Ferenc Gyarmati).
What's Changed
- test(flatMap): fix flatMap tests by @hoc081098 in #658
- fix(withLatestFrom): should iterate over
Iterable<Stream>once by @hoc081098 in #662 - fix: analyzer when using Dart 2.16.0 by @hoc081098 in #663
- Fix grammar errors in code examples by @fzyzcjy in #664
- docs: update
rxmarblesURL forRaceStreamby @peter-gy in #669 - Fix ci error
pub: command not foundby @beeth0ven in #673 - ci: remove deprecated
packagesflag by @beeth0ven in #674 - Create flutter-example.yml by @hoc081098 in #676
- Update flutter-example.yml by @hoc081098 in #677
- Add mapNotNull and whereNotNull by @hoc081098 in #548
- Prepare for v0.27.4 by @hoc081098 in #679
New Contributors
- @fzyzcjy made their first contribution in #664
- @peter-gy made their first contribution in #669
- @beeth0ven made their first contribution in #673
Full Changelog: 0.27.3...0.27.4
Release notes
Open source →Bug fixes
withLatestFromshould iterate overIterable<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
- Fix grammar errors in code examples (thanks to @fzyzcjy).
- Update RxMarbles URL for
RaceStream(thanks to @Péter Ferenc Gyarmati).
-
0.27.321 Nov 2021Release notes
Open source →https://pub.dev/packages/rxdart/versions/0.27.3
Bug fixes
flatMapnow creates innerStreams lazily.combineLatest,concat,concatEager,forkJoin,merge,race,zipiterate overIterable<Stream>s only once
when the stream is listened to.- Disallow mixing
autoConnect,connectandrefCounttogether, only one of them should be used.
Features
- Introduce
AbstractConnectableStream, base class for theConnectableStreamimplementations. - Improve
CompositeSubscription(thanks to @BreX900)- CompositeSubscription's
dispose,clear, andremovemethods 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.addwill throw aStateErrorinstead of aStringif this composite was disposed.
- CompositeSubscription's
Documentation
- Fix
Connectableexamples. - Update Web example to null safety.
- Fix
Flutterexample:SearchResultItem.fromJsontype error (thanks to @WenYeh)
Code refactoring
- Simplify
takeLastimplementation. - Migrate from
pedantictolintsandflutter_lints. - Refactor
BehaviorSubject,ReplaySubjectimplementations by using "Sentinel object"s instead ofValueWrappers.
New Contributors
- @wayne900204 made their first contribution in #627
- @BreX900 made their first contribution in #633
Full Changelog: 0.27.2...0.27.3
Release notes
Open source →Bug fixes
flatMapnow creates innerStreams lazily.combineLatest,concat,concatEager,forkJoin,merge,race,zipiterate overIterable<Stream>s only once when the stream is listened to.- Disallow mixing
autoConnect,connectandrefCounttogether, only one of them should be used.
Features
- Introduce
AbstractConnectableStream, base class for theConnectableStreamimplementations. - Improve
CompositeSubscription(thanks to @BreX900)- CompositeSubscription's
dispose,clear, andremovemethods 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.addwill throw aStateErrorinstead of aStringif this composite was disposed.
- CompositeSubscription's
Documentation
- Fix
Connectableexamples. - Update Web example to null safety.
- Fix
Flutterexample:SearchResultItem.fromJsontype error (thanks to @WenYeh)
Code refactoring
- Simplify
takeLastimplementation. - Migrate from
pedantictolintsandflutter_lints. - Refactor
BehaviorSubject,ReplaySubjectimplementations by using "Sentinel object"s instead ofValueWrappers.
-
0.27.203 Sep 2021Release notes
Open source →Bug fixes
onErrorReturnWithnow does not drop the remaining data events after the first error.- Disallow changing handlers of
ConnectableStreamSubscription.
Features
- Add
delayWhenoperator. - Add optional parameter
maxConcurrenttoflatMap. groupBy- Rename
GroupByStreamtoGroupedStream. - Add optional parameter
durationSelector, which used to determine how long each group should exist.
- Rename
ignoreElements- Remove
@deprecatedannotation (ignoreElementsshould not be marked as deprecated). - Change return type to
Stream<Never>.
- Remove
Documentation
- Update to
PublishSubject's docs (thanks to @AlexanderJohr).
Code refactoring
- Refactoring Stream Transformers, using
Stream.multiinternally.
-
0.27.130 May 2021Release notes
Open source →- Bugfix:
ForkJoinStreamthrowsNull check operator used on a null valuewhen using nullable-type. - Bugfix:
delayoperator- Pause and resume properly.
- Cancel all timers after it has been cancelled.
- Bugfix:
-
0.27.007 May 2021Release notes
Open source →- BREAKING: ValueStream
- Remove
ValueStreamExtensions. ValueStream.valueWrapperbecomesvalue.valueOrNull.hasValue.
ValueStream.errorAndStackTracebecomeserror.errorOrNull.hasError.stackTrace.
- Add
skipLast/SkipLastStreamTransformer(thanks @HannibalKcc). - Update
scan: changeseedto required param. - Add
StackTraceparam torecoveryFnwhen usingOnErrorResumeStreamTransformer/onErrorResume/onErrorReturnWith. - Internal refactoring
ConnectableStream.
- Remove
- BREAKING: ValueStream
-
0.26.027 Feb 2021Release notes
Open source →- 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.streamFactorynow accepts non-nullableStackTraceargument.
- Removed
- Update
ValueStream.requireValueandValueStream.requireError: throws actual error or aStateError, instead of throwing"Null check operator used on a null value"error.
- Add
- Stable, null-safe release.
-
0.26.0-nullsafety.108 Jan 2021 pre-releaseRelease notes
Open source →- Breaking change:
ValueStream- Add
valueWrappertoValueStream. - Change
value,hasValue,errorandhasErrorto extension getters.
- Fixed some API example documentation (thanks @HannibalKcc).
throttle/throttleTimehave been optimised for performance.- Updated Flutter example to work with the latest Flutter stable.
- Add
- Breaking change:
-
0.26.0-nullsafety.024 Nov 2020 pre-releaseRelease notes
Open source →- Migrate this package to null safety.
- Sdk constraints:
>=2.12.0-0 <3.0.0based on beta release guidelines.
- Sdk constraints:
- Migrate this package to null safety.
-
0.25.006 Dec 2020Release notes
Open source →- Sync behavior when using
publishValueSeeded.ValueStream,ReplayStream: exposesstackTracealong with theerror:- Change
ValueStream.errortoValueStream.errorAndStackTrace. - Change
ReplayStream.errorstoReplayStream.errorAndStackTraces. - Merge
Notification.errorandNotification.stackTraceintoNotification.errorAndStackTrace.
- Change
- Bugfix:
debounce/debounceTimeunnecessarily kept too many elements in queue.
- Sync behavior when using
-
0.25.0-beta316 Oct 2020 pre-releaseRelease notes
Open source →- Bugfix:
switchMapdoesn'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 aStreamfrom a callable function. - Override
BehaviorSubject's built-in operators to correct replaying the latest value ofBehaviorSubject. - Bugfix: Source
StreamSubscriptiondoesn't cancel when cancellingrefCount,zip,merge,concatStreamSubscription. - Forward done event of upstream to
ConnectableStream.
- Bugfix:
-
0.25.0-beta224 Sep 2020 pre-releaseRelease notes
Open source →- Internal refactoring Stream Transformers.
- Fixed
RetryStreamexample documentation. - Error thrown from
DeferStreamfactory will now be caught and converted toStream.error. doOnErrornow 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: trueon the downstream. - Pause and resume Streams properly.
- When any Stream emits an error, listening still continues unless
- Added
UsingStream. - Updated
TimerStream: Pause and resume Timer when pausing and resuming StreamSubscription.
- Fixed
- Internal refactoring Stream Transformers.
-
0.25.0-beta02 Aug 2020 pre-releaseRelease notes
Open source →- 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
- stream transformations on a ValueStream will also return a ValueStream, instead of
a standard broadcast Stream
-
0.24.115 May 2020Release notes
Open source →- 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
- Fix for BehaviorSubject, no longer emits null when using addStream and expecting an Error as first event (thanks yuvalr1)
-
0.24.014 Apr 2020Release notes
Open source →- 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
- Fix throttle no longer outputting the current buffer onDone
-
0.24.0-dev.110 Mar 2020 pre-releaseRelease notes
Open source →-
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!
-
-
-
0.23.113 Dec 2019 -
0.23.013 Dec 2019Release notes
Open source →- Extension Methods replace
Observableclass!- 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
Rxclass. - Remove
Observable.just, useStream.value - Remove
Observable.error, useStream.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->ValueStreamReplayObservable->ReplayStreamConnectableObservable->ConnectableStreamValueConnectableObservable->ValueConnectableStreamReplayConnectableObservable->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
ofTypemethod, usewhereTypeinstead - Deprecated
concatMap, use standard StreamasyncExpand. - Removed
AsObservableFuture,MinFuture,MaxFuture, andWrappedFuture- This removes
asObservablemethod in chains - Use default
asStreammethod from the baseFutureclass instead. minandmaxnow implemented directly on the Stream class
- This removes
- Extension Methods replace
-
0.23.0-dev.310 Dec 2019 pre-releaseRelease notes
Open source →- Fix missing exports:
ValueStreamReplayStreamConnectableStreamValueConnectableStreamReplayConnectableStream
- Fix missing exports:
-
0.23.0-dev.227 Nov 2019 pre-releaseRelease notes
Open source →- 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
Rxclass. - Remove
Observable.just, useStream.value - Remove
Observable.error, useStream.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->ValueStreamReplayObservable->ReplayStreamConnectableObservable->ConnectableStreamValueConnectableObservable->ValueConnectableStreamReplayConnectableObservable->ReplayConnectableStream
- Remove the Observable class. With extensions, you no longer need to wrap Streams in a [Stream]!
-
0.23.0-dev.119 Nov 2019 pre-releaseRelease notes
Open source →- 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
ofTypemethod, usewhereTypeinstead - Deprecated
concatMap, use standard StreamasyncExpand. - Removed
AsObservableFuture,MinFuture,MaxFuture, andWrappedFuture- This removes
asObservablemethod in chains - Use default
asStreammethod from the baseFutureclass instead. minandmaxnow implemented directly on the Stream class
- This removes
- All transformation methods removed from Observable class
- Feedback on this change appreciated as this is a dev release before 0.23.0 stable!
-
0.22.606 Nov 2019Release notes
Open source →- Bugfix: When listening multiple times to a
BehaviorSubjectthat starts with an Error, it emits duplicate events.- Linter: public_member_api_docs is now used, we have added extra documentation where required.
- Bugfix: When listening multiple times to a
-
0.22.501 Nov 2019Release notes
Open source →- Bugfix: DeferStream created Stream too early
- Bugfix: TimerStream created Timer too early
- Bugfix: DeferStream created Stream too early
-
0.22.417 Oct 2019 -
0.22.304 Oct 2019 -
0.22.226 Aug 2019Release notes
Open source →- Bugfix: When using a seeded
BehaviorSubjectand adding anError, upon listening, theBehaviorSubjectemitsnullinstead of the lastError.- Bugfix: calling cancel after a
switchMapcan cause aNoSuchMethodError. - Updated Flutter example to match the latest Flutter release
Observable.withLatestFromis now expanded to accept 2 or moreStreams thanks to Petrus Nguyễn Thái Học (@hoc081098)!- Deprecates
ofTypein favor ofwhereType, dropTypeToken.
- Bugfix: calling cancel after a
- Bugfix: When using a seeded
-
0.22.123 Jul 2019Release notes
Open source →Fixes following issues:
- Erroneous behavior with scan and
BehaviorSubject. - Bug where
flatMapwould cancel inner subscriptions inpause/resume. - Updates to make the current "pedantic" analyzer happy.
- Erroneous behavior with scan and
-
0.22.1+106 Aug 2019Nothing published for this version
-
0.22.003 May 2019Release notes
Open source →This version includes refactoring for the backpressure operators:
- Breaking Change:
debounceis now split intodebounceanddebounceTime. - Breaking Change:
sampleis now split intosampleandsampleTime. - Breaking Change:
throttleis now split intothrottleandthrottleTime.
- Breaking Change:
-
0.21.020 Feb 2019Release notes
Open source →- Breaking Change:
BehaviorSubjectnow has a separate factory constructorseeded()This allows you to seed this Subject with anullvalue.- Breaking Change:
BehaviorSubjectwill now emit anError, if the last event was also anError. Before, when anErroroccurred before alisten, the subscriber would not be notified of thatError. To refactor, simply change all occurences ofBehaviorSubject(seedValue: value)toBehaviorSubject.seeded(value) - Added the
groupByoperator - Bugix:
doOnCancel: will now await the cancel result, if it is aFuture. - Removed:
bufferWithCount,windowWithCount,tweenPlease usebufferCountandwindowCount,tweenis removed, because it never was an official Rx spec. - Updated Flutter example to work with the latest Flutter stable.
- Breaking Change:
- Breaking Change:
-
0.20.012 Dec 2018Release notes
Open source →- Breaking Change: bufferCount had buggy behavior when using
startBufferEvery(wasskippreviously) If you were relying on bufferCount withskipgreater than 1 before, then you may have noticed erroneous behavior.- Breaking Change:
repeatis 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. mapTois a new operator, which works just likemap, 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
- Breaking Change:
- Breaking Change: bufferCount had buggy behavior when using
-
0.19.012 Oct 2018Release notes
Open source →- Breaking Change: Subjects
onCancelfunction now returnsvoidinstead ofFutureto properly comply with theStreamControllersignature.- 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
connectmethod 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
publishValueorshareValue
- ReplayObservable: A new interface that allows you to get the values emitted by an Observable.
- Implemented by ReplaySubject
- Convert normal observables into ReplayObservables via
publishReplayorshareReplay
- Breaking Change: Subjects
-
0.18.103 Jul 2018Release notes
Open source →- Add
retryWhenoperator. Thanks to Razvan Lung (@long1eu)! This can be used for custom retry logic.
- Add
-
0.18.019 Jun 2018Release notes
Open source →- Breaking Change: remove
retypemethod, deprecated as part of Dart 2. - Add
flatMapIterable
- Breaking Change: remove
-
0.17.007 Jun 2018Release notes
Open source →- Breaking Change:
streamproperty on Observable is now private.- Avoids API confusion
- Simplifies Subject implementation
- Require folks who are overriding the
streamproperty to use asuperconstructor instead
- Adds proper onPause and onResume handling for
amb/race,combineLatest,concat,concat_eager,mergeandzip - Add
switchLatestoperator - Add errors and stacktraces to RetryError class
- Add
onErrorResumeandonErrorRetryWithoperators. These allow folks to return a specific stream or value depending on the error that occurred.
- Breaking Change:
-
0.16.702 May 2018Release notes
Open source →- Fix new buffer and window implementation for Flutter + Dart 2
- Subject now implements the Observable interface
-
0.16.602 Apr 2018Release notes
Open source →- Rework for
bufferandwindow, 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
onCountsampler forbufferandwindow - added
onFuturesampler forbufferandwindow - added
onTestsampler forbufferandwindow - added
onTimesampler forbufferandwindow - added
onStreamsampler forbufferandwindow
- Rework for
-
0.16.530 Mar 2018Release notes
Open source →- Renames
ambtorace - Renames
flatMapLatesttoswitchMap - Renames
bufferWithCounttobufferCount - Renames
windowWithCounttowindowCount
- Renames
-
0.16.429 Mar 2018 -
0.16.328 Mar 2018 -
0.16.228 Mar 2018 -
0.16.127 Mar 2018 -
0.16.022 Feb 2018Release notes
Open source →- breaks backwards compatibility, this release only works with Dart SDK >=2.0.0.
- Removed old
castin favour of the now native Stream cast method. - Override
retypeto return anObservable.
-
0.16.0+123 Feb 2018 -
0.16.0+219 Mar 2018Release notes
Open source →- Add
valuetoBehaviorSubject. Allows you to get the latest value emitted by the subject if it exists. - Add
valuestoReplayrSubject. Allows you to get the values stored by the subject if any exists.
- Add
-
0.15.121 Feb 2018Release notes
Open source →- Add
exhaustMapmap to inner observable, ignore other values until that observable completes. - Improved code to be dartdevc compatible.
- Add upper SDK version limit in pubspec
- Add
-
0.15.021 Nov 2017Release notes
Open source →- Change
debounceto emit the last item of the source stream as soon as the source stream completes. - Ensure
debouncedoes not keep open any addition async timers after it has been cancelled.
- Change
-
0.14.019 Aug 2017Release notes
Open source →- Add
PublishSubject(thanks to @pauldemarco) - Fix bug with
doOnXoperators where callbacks were fired too often
- Add
-
0.14.0+106 Sep 2017Release notes
Open source →- Change
DoStreamTransformerto return aFutureon cancel for api compatibility.
- Change
-
0.14.0+227 Oct 2017Nothing published for this version
-
0.13.130 Jun 2017Release notes
Open source →- 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
-
0.13.025 Jun 2017Release notes
Open source →- Remove
calloperator /StreamTransformerentirely - 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
- Remove
-
0.12.002 Jun 2017Release notes
Open source →- Added doOn* operators in place of
call. - Added
DoStreamTransformeras a replacement forCallStreamTransformer - Deprecated
callandCallStreamTransformer. Please use the appropriatedoOnXoperator / transformer. - Added
distinctUnique. Emits items if they've never been emitted before. Same as to Rx#distinct.
- Added doOn* operators in place of
-
0.11.025 May 2017Release notes
Open source →- !!!Breaking Api Change!!!
- Observable.groupBy has been removed in order to be compatible with the next version of the
Streamclass in Dart 1.24.0, which includes this method
- Observable.groupBy has been removed in order to be compatible with the next version of the
- !!!Breaking Api Change!!!