Reactive Dart

Pub Package Build Status Coverage Status GitHub Issues GitHub Forks GitHub Stars GitHub License

Reactive Extensions Library for Dart providing an API for asynchronous programming with observable streams.

Reactive is created in the style of ReactiveX, and does not depend on Dart Streams. At this point this code is quite experimental, and might miss features or have serious bugs.

This library is open source and well tested. Development happens on GitHub. Feel free to report issues or create a pull-request there. General questions are best asked on StackOverflow.

The package is hosted on dart packages. Up-to-date class documentation is created with every release.

Currently the Dart programming language (or my inability to use it correctly) is blocking a more pleasant API in a few places:

  • The lack of extension methods in Dart makes it awkward to access operator functions and constructor methods: dart-lang/language#40, dart-lang/language#41, dart-lang/language#42, dart-lang/language#177, dart-lang/language#309, dart-lang/language#8547.
  • For some reason type inference over chained operators does not work. For example observable.pipe2(filter(()) => ...), map(() => ...)) is unable to correctly infer the types in the second operator, while observable.pipe(filter() => ...).pipe(map(() => ...) does.
  • The lack of variable length arguments and generics requires duplicated functions and typedefs with a number suffix (see above).

License

The MIT License, see LICENSE.

Libraries

rx
rx.constructors
rx.core
rx.observables
rx.operators
rx.schedulers
rx.shared
rx.subjects
rx.subscriptions
rx.testing