Releases: ReactiveX/rxdart
0.24.0
- 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
0.24.0-dev.1
-
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. - doOnData did not output correct sequences on streams that were transformed
- 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! -
Fix API Links in README
- Fix broken links in README to point to new api docs for extension methods
Extension Methods Support
- 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
, 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
->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, usewhereType
instead - Deprecated
concatMap
, use standard StreamasyncExpand
. - Removed
AsObservableFuture
,MinFuture
,MaxFuture
, andWrappedFuture
- This removes
asObservable
method in chains - Use default
asStream
method from the baseFuture
class instead. min
andmax
now implemented directly on the Stream class
- This removes
Extension Methods: Phase 1
- 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, usewhereType
instead - Deprecated
concatMap
, use standard StreamasyncExpand
. - Removed
AsObservableFuture
,MinFuture
,MaxFuture
, andWrappedFuture
- This removes
asObservable
method in chains - Use default
asStream
method from the baseFuture
class instead. min
andmax
now implemented directly on the Stream class
- This removes
Bug fixes & Linter update
- Bugfix: When listening multiple times to a
BehaviorSubject
that starts with an Error,
it emits duplicate events. - Linter: public_member_api_docs is now used, we have added extra documentation
where required.
Bugfix: DeferStream and TimerStream
- Bugfix: DeferStream created Stream too early
- Bugfix: TimerStream created Timer too early
Bugfix: SwitchMap controller no longer closed early
- SwitchMap controller is no longer closed improperly in some scenarios
Fix for whereType in Flutter production builds
The newly added whereType operator, which replaces onType, was failing in Flutter production builds.
The test method for Type matching has been altered.
Bug fixes
Fixes following issues:
- Erroneous behavior with scan and
BehaviorSubject
. - Bug where
flatMap
would cancel inner subscriptions inpause
/resume
. - Updates to make the current "pedantic" analyzer happy.