CINXE.COM

rxdart | Dart package

<!DOCTYPE html> <html lang="en-us"><head><script src="https://www.googletagmanager.com/gtm.js?id=GTM-MX6DBN9" async="async"></script><script src="/static/hash-j60jq2j3/js/gtm.js" async="async"></script><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="ie=edge"/><meta name="viewport" content="width=device-width, initial-scale=1"/><meta name="twitter:card" content="summary"/><meta name="twitter:site" content="@dart_lang"/><meta name="twitter:description" content="RxDart is an implementation of the popular ReactiveX api for asynchronous programming, leveraging the native Dart Streams api. "/><meta name="twitter:image" content="https://pub.dev/static/hash-j60jq2j3/img/pub-dev-icon-cover-image.png"/><meta property="og:type" content="website"/><meta property="og:site_name" content="Dart packages"/><meta property="og:title" content="rxdart | Dart package"/><meta property="og:description" content="RxDart is an implementation of the popular ReactiveX api for asynchronous programming, leveraging the native Dart Streams api. "/><meta property="og:image" content="https://pub.dev/static/hash-j60jq2j3/img/pub-dev-icon-cover-image.png"/><meta property="og:url" content="https://pub.dev/packages/rxdart"/><title>rxdart | Dart package</title><link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Google+Sans:wght@400;500;700&amp;family=Google+Sans+Display:wght@400&amp;family=Google+Sans+Text:wght@400;500;700&amp;family=Google+Sans+Mono:wght@400;700&amp;display=swap"/><link rel="shortcut icon" href="/favicon.ico?hash=nk4nss8c7444fg0chird9erqef2vkhb8"/><meta rel="apple-touch-icon" href="/static/hash-j60jq2j3/img/apple-touch-icon.png"/><meta rel="apple-touch-icon-precomposed" href="/static/hash-j60jq2j3/img/apple-touch-icon.png"/><link rel="stylesheet" href="https://www.gstatic.com/glue/v25_0/ccb.min.css"/><link rel="search" type="application/opensearchdescription+xml" title="Dart packages" href="/osd.xml"/><link rel="canonical" href="https://pub.dev/packages/rxdart"/><meta name="description" content="RxDart is an implementation of the popular ReactiveX api for asynchronous programming, leveraging the native Dart Streams api. "/><link rel="alternate" type="application/atom+xml" title="Updated Packages Feed for Pub" href="/feed.atom"/><link rel="stylesheet" type="text/css" href="/static/hash-j60jq2j3/material/bundle/styles.css"/><link rel="stylesheet" type="text/css" href="/static/hash-j60jq2j3/css/style.css"/><script src="/static/hash-j60jq2j3/material/bundle/script.min.js" defer="defer"></script><script src="/static/hash-j60jq2j3/js/script.dart.js" defer="defer"></script><script src="https://www.gstatic.com/brandstudio/kato/cookie_choice_component/cookie_consent_bar.v3.js" defer="defer" data-autoload-cookie-consent-bar="true"></script><meta name="pub-page-data" content="eyJwa2dEYXRhIjp7InBhY2thZ2UiOiJyeGRhcnQiLCJ2ZXJzaW9uIjoiMC4yOC4wIiwibGlrZXMiOjI3NDYsInB1Ymxpc2hlcklkIjoiZmx1dHRlcmNvbW11bml0eS5kZXYiLCJpc0Rpc2NvbnRpbnVlZCI6ZmFsc2UsImlzTGF0ZXN0Ijp0cnVlfSwic2Vzc2lvbkF3YXJlIjpmYWxzZX0="/><link rel="preload" href="/static/hash-j60jq2j3/highlight/highlight-with-init.js" as="script"/></head><body class="light-theme"><script src="/static/hash-j60jq2j3/js/dark-init.js"></script><noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-MX6DBN9" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript><div class="site-header"><button class="hamburger" aria-label="menu toggle"></button><a class="logo" href="/" aria-label="Go to the landing page of pub.dev"><img class="site-logo" src="/static/hash-j60jq2j3/img/pub-dev-logo.svg" alt="" width="140" height="30" role="presentation"/></a><div class="site-header-space"></div><div class="site-header-mask"></div><div class="site-header-search"><form action="/packages" method="GET"><input class="site-header-search-input" name="q" placeholder="New search..." autocomplete="on" title="Search"/></form></div><nav class="site-header-nav scroll-container"><div class="nav-login-container"><button id="-account-login" class="nav-main-button link">Sign in</button></div><div class="nav-container nav-help-container hoverable"><button class="nav-main-button">Help</button><div class="nav-hover-popup"><div class="nav-table-columns"><div class="nav-table-column"><h3>pub.dev</h3><a class="nav-link" href="/help/search" rel="noopener" target="_blank">Searching for packages</a><a class="nav-link" href="/help/scoring" rel="noopener" target="_blank">Package scoring and pub points</a></div><div class="nav-table-column"><h3>Flutter</h3><a class="nav-link" href="https://flutter.dev/using-packages/" rel="noopener" target="_blank">Using packages</a><a class="nav-link" href="https://flutter.dev/developing-packages/" rel="noopener" target="_blank">Developing packages and plugins</a><a class="nav-link" href="https://dart.dev/tools/pub/publishing" rel="noopener" target="_blank">Publishing a package</a></div><div class="nav-table-column"><h3>Dart</h3><a class="nav-link" href="https://dart.dev/guides/packages" rel="noopener" target="_blank">Using packages</a><a class="nav-link" href="https://dart.dev/tools/pub/publishing" rel="noopener" target="_blank">Publishing a package</a></div></div></div></div><div class="nav-container nav-help-container-mobile foldable"><h3 class="foldable-button">pub.dev <img class="foldable-icon" src="/static/hash-j60jq2j3/img/nav-mobile-foldable-icon.svg" alt="toggle folding of the section" width="13" height="6"/></h3><div class="foldable-content"><a class="nav-link" href="/help/search" rel="noopener" target="_blank">Searching for packages</a><a class="nav-link" href="/help/scoring" rel="noopener" target="_blank">Package scoring and pub points</a></div></div><div class="nav-container nav-help-container-mobile foldable"><h3 class="foldable-button">Flutter <img class="foldable-icon" src="/static/hash-j60jq2j3/img/nav-mobile-foldable-icon.svg" alt="toggle folding of the section" width="13" height="6"/></h3><div class="foldable-content"><a class="nav-link" href="https://flutter.dev/using-packages/" rel="noopener" target="_blank">Using packages</a><a class="nav-link" href="https://flutter.dev/developing-packages/" rel="noopener" target="_blank">Developing packages and plugins</a><a class="nav-link" href="https://dart.dev/tools/pub/publishing" rel="noopener" target="_blank">Publishing a package</a></div></div><div class="nav-container nav-help-container-mobile foldable"><h3 class="foldable-button">Dart <img class="foldable-icon" src="/static/hash-j60jq2j3/img/nav-mobile-foldable-icon.svg" alt="toggle folding of the section" width="13" height="6"/></h3><div class="foldable-content"><a class="nav-link" href="https://dart.dev/guides/packages" rel="noopener" target="_blank">Using packages</a><a class="nav-link" href="https://dart.dev/tools/pub/publishing" rel="noopener" target="_blank">Publishing a package</a></div></div></nav><button class="-pub-theme-toggle" aria-label="light/dark theme toggle"></button></div><div id="banner-container"></div><main class="container"><div class="detail-wrapper -active -has-info-box"><div class="detail-banners"><a href="https://flutter.dev/docs/development/packages-and-plugins/favorites" rel="noopener" target="_blank" title="Package is a Flutter Favorite"><img class="ff-banner ff-banner-desktop displayed-in-light-theme" src="/static/hash-j60jq2j3/img/ff-banner-desktop-2x.png" alt="" width="150" height="218" role="presentation"/><img class="ff-banner ff-banner-desktop displayed-in-dark-theme" src="/static/hash-j60jq2j3/img/ff-banner-desktop-dark-2x.png" alt="" width="150" height="218" role="presentation"/><img class="ff-banner ff-banner-mobile displayed-in-light-theme" src="/static/hash-j60jq2j3/img/ff-banner-mobile-2x.png" alt="" width="94" height="116" role="presentation"/><img class="ff-banner ff-banner-mobile displayed-in-dark-theme" src="/static/hash-j60jq2j3/img/ff-banner-mobile-dark-2x.png" alt="" width="94" height="116" role="presentation"/></a></div><div class="detail-header -is-loose"><div class="detail-container"><div class="detail-header-outer-block"><div class="detail-header-content-block"><h1 class="title pub-monochrome-icon-hoverable">rxdart 0.28.0 <span class="pkg-page-title-copy"><img class="pub-monochrome-icon pkg-page-title-copy-icon filter-invert-on-dark" src="/static/hash-j60jq2j3/img/content-copy-icon.svg" alt="copy &quot;rxdart: ^0.28.0&quot; to clipboard" width="18" height="18" title="Copy &quot;rxdart: ^0.28.0&quot; to clipboard" data-copy-content="rxdart: ^0.28.0" data-ga-click-event="copy-package-version"/><div class="pkg-page-title-copy-feedback"><span class="code">rxdart: ^0.28.0</span> copied to clipboard</div></span></h1><div class="metadata">Published <span><a class="-x-ago" href="" title="Jun 14, 2024" role="button" data-timestamp="1718356800219">9 months ago</a></span> • <a class="-pub-publisher" href="/publishers/fluttercommunity.dev"><img class="-pub-publisher-shield filter-invert-on-dark" src="/static/hash-j60jq2j3/img/material-icon-verified.svg" alt="verified publisher" width="14" height="14" title="Published by a pub.dev verified publisher"/>fluttercommunity.dev</a><span class="package-badge" title="Package is compatible with Dart 3.">Dart 3 compatible</span></div><div class="detail-tags-and-like"><div class="detail-tags"><div class="-pub-tag-badge"><span class="tag-badge-main">SDK</span><a class="tag-badge-sub" href="/packages?q=sdk%3Adart" rel="nofollow" title="Packages compatible with Dart SDK">Dart</a><a class="tag-badge-sub" href="/packages?q=sdk%3Aflutter" rel="nofollow" title="Packages compatible with Flutter SDK">Flutter</a></div><div class="-pub-tag-badge"><span class="tag-badge-main">Platform</span><a class="tag-badge-sub" href="/packages?q=platform%3Aandroid" rel="nofollow" title="Packages compatible with Android platform">Android</a><a class="tag-badge-sub" href="/packages?q=platform%3Aios" rel="nofollow" title="Packages compatible with iOS platform">iOS</a><a class="tag-badge-sub" href="/packages?q=platform%3Alinux" rel="nofollow" title="Packages compatible with Linux platform">Linux</a><a class="tag-badge-sub" href="/packages?q=platform%3Amacos" rel="nofollow" title="Packages compatible with macOS platform">macOS</a><a class="tag-badge-sub" href="/packages?q=platform%3Aweb" rel="nofollow" title="Packages compatible with Web platform">web</a><a class="tag-badge-sub" href="/packages?q=platform%3Awindows" rel="nofollow" title="Packages compatible with Windows platform">Windows</a></div></div><div class="detail-like"><button id="-pub-like-icon-button" class="mdc-icon-button" data-ga-click-event="toggle-like" aria-pressed="false" title="Like this package"><img class="mdc-icon-button__icon" src="/static/hash-j60jq2j3/img/like-inactive.svg" alt="liked status: inactive" width="18" height="18"/><img class="mdc-icon-button__icon mdc-icon-button__icon--on" src="/static/hash-j60jq2j3/img/like-active.svg" alt="liked status: active" width="18" height="18"/></button><span class="likes-count"><span id="likes-count">2.7k</span></span></div></div></div></div></div></div><div class="detail-container"><div class="detail-lead"><div class="detail-metadata-toggle"><div class="detail-metadata-toggle-icon">→</div><h3 class="detail-lead-title">Metadata</h3></div><p class="detail-lead-text">RxDart is an implementation of the popular ReactiveX api for asynchronous programming, leveraging the native Dart Streams api. </p><p class="detail-lead-more"><a class="detail-metadata-toggle">More...</a></p></div></div><div class="detail-body"><div class="detail-tabs"><div class="detail-tabs-wide-header"><div class="detail-container"><ul class="detail-tabs-header"><li class="detail-tab tab-button detail-tab-readme-title -active">Readme</li><li class="detail-tab tab-link detail-tab-changelog-title"><a href="/packages/rxdart/changelog" role="button">Changelog</a></li><li class="detail-tab tab-link detail-tab-installing-title"><a href="/packages/rxdart/install" role="button">Installing</a></li><li class="detail-tab tab-link detail-tab-versions-title"><a href="/packages/rxdart/versions" role="button">Versions</a></li><li class="detail-tab tab-link detail-tab-analysis-title"><a href="/packages/rxdart/score" role="button">Scores</a></li></ul></div></div><div class="detail-container detail-body-main"><div class="detail-tabs-content"><section class="tab-content detail-tab-readme-content -active markdown-body"><h1 id="rxdart" class="hash-header">RxDart <a href="#rxdart" class="hash-link">#</a></h1> <p align="right"> <a href="https://flutter.dev/docs/development/packages-and-plugins/favorites"><img src="https://docs.flutter.dev/assets/images/docs/development/packages-and-plugins/FlutterFavoriteLogo.png" width="100" alt="build"></a> </p> <p align="center"> <img src="https://github.com/ReactiveX/rxdart/blob/master/packages/rxdart/screenshots/logo.png?raw=true" height="200" alt="RxDart"> </p> <p><a href="https://github.com/ReactiveX/rxdart/actions" rel="ugc"><img src="https://github.com/ReactiveX/rxdart/workflows/Dart%20CI/badge.svg" alt="Build Status"></a> <a href="https://codecov.io/gh/ReactiveX/rxdart" rel="ugc"><img src="https://codecov.io/gh/ReactiveX/rxdart/branch/master/graph/badge.svg" alt="codecov"></a> <a href="https://pub.dartlang.org/packages/rxdart" rel="ugc"><img src="https://img.shields.io/pub/v/rxdart.svg" alt="Pub"></a> <a href="https://pub.dartlang.org/packages/rxdart" rel="ugc"><img src="https://img.shields.io/pub/v/rxdart?include_prereleases&amp;color=%23A0147B" alt="Pub Version (including pre-releases)"></a> <a href="https://gitter.im/ReactiveX/rxdart" rel="ugc"><img src="https://img.shields.io/gitter/room/ReactiveX/rxdart.svg" alt="Gitter"></a> <a href="https://docs.flutter.dev/data-and-backend/state-mgmt/options#bloc--rx" rel="ugc"><img src="https://img.shields.io/badge/flutter-website-deepskyblue.svg" alt="Flutter website"></a> <a href="https://github.com/ReactiveX/rxdart/actions/workflows/flutter-example.yml" rel="ugc"><img src="https://github.com/ReactiveX/rxdart/actions/workflows/flutter-example.yml/badge.svg" alt="Build Flutter example"></a> <a href="https://www.apache.org/licenses/LICENSE-2.0" rel="ugc"><img src="https://img.shields.io/github/license/ReactiveX/rxdart" alt="License"></a> <a href="https://hits.seeyoufarm.com" rel="ugc"><img src="https://hits.seeyoufarm.com/api/count/incr/badge.svg?url=https%3A%2F%2Fgithub.com%2FReactiveX%2Frxdart&amp;count_bg=%23D71092&amp;title_bg=%23555555&amp;icon=&amp;icon_color=%23E7E7E7&amp;title=hits&amp;edge_flat=false" alt="Hits"></a></p> <h2 id="about" class="hash-header">About <a href="#about" class="hash-link">#</a></h2> <p>RxDart extends the capabilities of Dart <a href="https://api.dart.dev/stable/dart-async/Stream-class.html">Streams</a> and <a href="https://api.dart.dev/stable/dart-async/StreamController-class.html">StreamControllers</a>.</p> <p>Dart comes with a very decent <a href="https://api.dart.dev/stable/dart-async/Stream-class.html">Streams</a> API out-of-the-box; rather than attempting to provide an alternative to this API, RxDart adds functionality from the reactive extensions specification on top of it.</p> <p>RxDart does not provide its Observable class as a replacement for Dart Streams. Instead, it offers several additional Stream classes, operators (extension methods on the Stream class), and Subjects.</p> <p>If you are familiar with Observables from other languages, please see <a href="#rx-observables-vs-dart-streams">the Rx Observables vs. Dart Streams comparison chart</a> for notable distinctions between the two.</p> <h2 id="upgrading-from-rxdart-022x-to-023x" class="hash-header">Upgrading from RxDart 0.22.x to 0.23.x <a href="#upgrading-from-rxdart-022x-to-023x" class="hash-link">#</a></h2> <p>RxDart 0.23.x moves away from the Observable class, utilizing Dart 2.6's new extension methods instead. This requires several small refactors that can be easily automated -- which is just what we've done!</p> <p>Please follow the instructions on the <a href="https://pub.dev/packages/rxdart_codemod">rxdart_codemod</a> package to automatically upgrade your code to support RxDart 0.23.x.</p> <h2 id="how-to-use-rxdart" class="hash-header">How To Use RxDart <a href="#how-to-use-rxdart" class="hash-link">#</a></h2> <h3 id="for-example-reading-the-konami-code" class="hash-header">For Example: Reading the Konami Code <a href="#for-example-reading-the-konami-code" class="hash-link">#</a></h3> <pre><code class="language-dart">import 'package:rxdart/rxdart.dart'; void main() { const konamiKeyCodes = &lt;int&gt;[ KeyCode.UP, KeyCode.UP, KeyCode.DOWN, KeyCode.DOWN, KeyCode.LEFT, KeyCode.RIGHT, KeyCode.LEFT, KeyCode.RIGHT, KeyCode.B, KeyCode.A, ]; final result = querySelector('#result')!; document.onKeyUp .map((event) =&gt; event.keyCode) .bufferCount(10, 1) // An extension method provided by rxdart .where((lastTenKeyCodes) =&gt; const IterableEquality&lt;int&gt;().equals(lastTenKeyCodes, konamiKeyCodes)) .listen((_) =&gt; result.innerHtml = 'KONAMI!'); } </code></pre> <h2 id="api-overview" class="hash-header">API Overview <a href="#api-overview" class="hash-link">#</a></h2> <p>RxDart adds functionality to Dart Streams in three ways:</p> <ul> <li><a href="#stream-classes">Stream Classes</a> - create Streams with specific capabilities, such as combining or merging many Streams.</li> <li><a href="#extension-methods">Extension Methods</a> - transform a source Stream into a new Stream with different capabilities, such as throttling or buffering events.</li> <li><a href="#subjects">Subjects</a> - StreamControllers with additional powers</li> </ul> <h3 id="stream-classes" class="hash-header">Stream Classes <a href="#stream-classes" class="hash-link">#</a></h3> <p>The Stream class provides different ways to create a Stream: <code>Stream.fromIterable</code> or <code>Stream.periodic</code>. RxDart provides additional Stream classes for a variety of tasks, such as combining or merging Streams!</p> <p>You can construct the Streams provided by RxDart in two ways. The following examples are equivalent in terms of functionality:</p> <ul> <li>Instantiating the Stream class directly. <ul> <li>Example: <code>final mergedStream = MergeStream([myFirstStream, mySecondStream]);</code></li> </ul> </li> <li>Using static factories from the Rx class, which are useful for discovering which types of Streams are provided by RxDart. Under the hood, these factories call the corresponding Stream constructor. <ul> <li>Example: <code>final mergedStream = Rx.merge([myFirstStream, mySecondStream]);</code></li> </ul> </li> </ul> <h4 id="list-of-classes--static-factories">List of Classes / Static Factories</h4> <ul> <li><a href="https://pub.dev/documentation/rxdart/latest/rx/CombineLatestStream-class.html">CombineLatestStream</a> (combine2, combine3... combine9) / <a href="https://pub.dev/documentation/rxdart/latest/rx/Rx/combineLatest2.html">Rx.combineLatest2</a>...<a href="https://pub.dev/documentation/rxdart/latest/rx/Rx/combineLatest9.html">Rx.combineLatest9</a></li> <li><a href="https://pub.dev/documentation/rxdart/latest/rx/ConcatStream-class.html">ConcatStream</a> / <a href="https://pub.dev/documentation/rxdart/latest/rx/Rx/concat.html">Rx.concat</a></li> <li><a href="https://pub.dev/documentation/rxdart/latest/rx/ConcatEagerStream-class.html">ConcatEagerStream</a> / <a href="https://pub.dev/documentation/rxdart/latest/rx/Rx/concatEager.html">Rx.concatEager</a></li> <li><a href="https://pub.dev/documentation/rxdart/latest/rx/DeferStream-class.html">DeferStream</a> / <a href="https://pub.dev/documentation/rxdart/latest/rx/Rx/defer.html">Rx.defer</a></li> <li><a href="https://pub.dev/documentation/rxdart/latest/rx/ForkJoinStream-class.html">ForkJoinStream</a> (join2, join3... join9) / <a href="https://pub.dev/documentation/rxdart/latest/rx/Rx/forkJoin2.html">Rx.forkJoin2</a>...<a href="https://pub.dev/documentation/rxdart/latest/rx/Rx/forkJoin9.html">Rx.forkJoin9</a></li> <li><a href="https://pub.dev/documentation/rxdart/latest/rx/FromCallableStream-class.html">FromCallableStream</a> / <a href="https://pub.dev/documentation/rxdart/latest/rx/Rx/fromCallable.html">Rx.fromCallable</a></li> <li><a href="https://pub.dev/documentation/rxdart/latest/rx/MergeStream-class.html">MergeStream</a> / <a href="https://pub.dev/documentation/rxdart/latest/rx/Rx/merge.html">Rx.merge</a></li> <li><a href="https://pub.dev/documentation/rxdart/latest/rx/NeverStream-class.html">NeverStream</a> / <a href="https://pub.dev/documentation/rxdart/latest/rx/Rx/never.html">Rx.never</a></li> <li><a href="https://pub.dev/documentation/rxdart/latest/rx/RaceStream-class.html">RaceStream</a> / <a href="https://pub.dev/documentation/rxdart/latest/rx/Rx/race.html">Rx.race</a></li> <li><a href="https://pub.dev/documentation/rxdart/latest/rx/RangeStream-class.html">RangeStream</a> / <a href="https://pub.dev/documentation/rxdart/latest/rx/Rx/range.html">Rx.range</a></li> <li><a href="https://pub.dev/documentation/rxdart/latest/rx/RepeatStream-class.html">RepeatStream</a> / <a href="https://pub.dev/documentation/rxdart/latest/rx/Rx/repeat.html">Rx.repeat</a></li> <li><a href="https://pub.dev/documentation/rxdart/latest/rx/RetryStream-class.html">RetryStream</a> / <a href="https://pub.dev/documentation/rxdart/latest/rx/Rx/retry.html">Rx.retry</a></li> <li><a href="https://pub.dev/documentation/rxdart/latest/rx/RetryWhenStream-class.html">RetryWhenStream</a> / <a href="https://pub.dev/documentation/rxdart/latest/rx/Rx/retryWhen.html">Rx.retryWhen</a></li> <li><a href="https://pub.dev/documentation/rxdart/latest/rx/SequenceEqualStream-class.html">SequenceEqualStream</a> / <a href="https://pub.dev/documentation/rxdart/latest/rx/Rx/sequenceEqual.html">Rx.sequenceEqual</a></li> <li><a href="https://pub.dev/documentation/rxdart/latest/rx/SwitchLatestStream-class.html">SwitchLatestStream</a> / <a href="https://pub.dev/documentation/rxdart/latest/rx/Rx/switchLatest.html">Rx.switchLatest</a></li> <li><a href="https://pub.dev/documentation/rxdart/latest/rx/TimerStream-class.html">TimerStream</a> / <a href="https://pub.dev/documentation/rxdart/latest/rx/Rx/timer.html">Rx.timer</a></li> <li><a href="https://pub.dev/documentation/rxdart/latest/rx/UsingStream-class.html">UsingStream</a> / <a href="https://pub.dev/documentation/rxdart/latest/rx/Rx/using.html">Rx.using</a></li> <li><a href="https://pub.dev/documentation/rxdart/latest/rx/ZipStream-class.html">ZipStream</a> (zip2, zip3, zip4, ..., zip9) / <a href="https://pub.dev/documentation/rxdart/latest/rx/Rx/zip2.html">Rx.zip</a>...<a href="https://pub.dev/documentation/rxdart/latest/rx/Rx/zip9.html">Rx.zip9</a></li> <li>If you're looking for an <a href="https://reactivex.io/documentation/operators/interval.html" rel="ugc">Interval</a> equivalent, check out Dart's <a href="https://api.dart.dev/stable/2.7.2/dart-async/Stream/Stream.periodic.html">Stream.periodic</a> for similar behavior.</li> </ul> <h3 id="extension-methods" class="hash-header">Extension Methods <a href="#extension-methods" class="hash-link">#</a></h3> <p>The extension methods provided by RxDart can be used on any <code>Stream</code>. They convert a source Stream into a new Stream with additional capabilities, such as buffering or throttling events.</p> <h4 id="example">Example</h4> <pre><code class="language-dart">Stream.fromIterable([1, 2, 3]) .throttleTime(Duration(seconds: 1)) .listen(print); // prints 1 </code></pre> <h4 id="list-of-extension-methods">List of Extension Methods</h4> <ul> <li><a href="https://pub.dev/documentation/rxdart/latest/rx/BufferExtensions/buffer.html">buffer</a></li> <li><a href="https://pub.dev/documentation/rxdart/latest/rx/BufferExtensions/bufferCount.html">bufferCount</a></li> <li><a href="https://pub.dev/documentation/rxdart/latest/rx/BufferExtensions/bufferTest.html">bufferTest</a></li> <li><a href="https://pub.dev/documentation/rxdart/latest/rx/BufferExtensions/bufferTime.html">bufferTime</a></li> <li><a href="https://pub.dev/documentation/rxdart/latest/rx/ConcatExtensions/concatWith.html">concatWith</a></li> <li><a href="https://pub.dev/documentation/rxdart/latest/rx/DebounceExtensions/debounce.html">debounce</a></li> <li><a href="https://pub.dev/documentation/rxdart/latest/rx/DebounceExtensions/debounceTime.html">debounceTime</a></li> <li><a href="https://pub.dev/documentation/rxdart/latest/rx/DefaultIfEmptyExtension/defaultIfEmpty.html">defaultIfEmpty</a></li> <li><a href="https://pub.dev/documentation/rxdart/latest/rx/DelayExtension/delay.html">delay</a></li> <li><a href="https://pub.dev/documentation/rxdart/latest/rx/DelayWhenExtension/delayWhen.html">delayWhen</a></li> <li><a href="https://pub.dev/documentation/rxdart/latest/rx/DematerializeExtension/dematerialize.html">dematerialize</a></li> <li><a href="https://pub.dev/documentation/rxdart/latest/rx/DistinctUniqueExtension/distinctUnique.html">distinctUnique</a></li> <li><a href="https://pub.dev/documentation/rxdart/latest/rx/DoExtensions/doOnCancel.html">doOnCancel</a></li> <li><a href="https://pub.dev/documentation/rxdart/latest/rx/DoExtensions/doOnData.html">doOnData</a></li> <li><a href="https://pub.dev/documentation/rxdart/latest/rx/DoExtensions/doOnDone.html">doOnDone</a></li> <li><a href="https://pub.dev/documentation/rxdart/latest/rx/DoExtensions/doOnEach.html">doOnEach</a></li> <li><a href="https://pub.dev/documentation/rxdart/latest/rx/DoExtensions/doOnError.html">doOnError</a></li> <li><a href="https://pub.dev/documentation/rxdart/latest/rx/DoExtensions/doOnListen.html">doOnListen</a></li> <li><a href="https://pub.dev/documentation/rxdart/latest/rx/DoExtensions/doOnPause.html">doOnPause</a></li> <li><a href="https://pub.dev/documentation/rxdart/latest/rx/DoExtensions/doOnResume.html">doOnResume</a></li> <li><a href="https://pub.dev/documentation/rxdart/latest/rx/EndWithExtension/endWith.html">endWith</a></li> <li><a href="https://pub.dev/documentation/rxdart/latest/rx/EndWithManyExtension/endWithMany.html">endWithMany</a></li> <li><a href="https://pub.dev/documentation/rxdart/latest/rx/ExhaustMapExtension/exhaustMap.html">exhaustMap</a></li> <li><a href="https://pub.dev/documentation/rxdart/latest/rx/FlatMapExtension/flatMap.html">flatMap</a></li> <li><a href="https://pub.dev/documentation/rxdart/latest/rx/FlatMapExtension/flatMapIterable.html">flatMapIterable</a></li> <li><a href="https://pub.dev/documentation/rxdart/latest/rx/GroupByExtension/groupBy.html">groupBy</a></li> <li><a href="https://pub.dev/documentation/rxdart/latest/rx/IntervalExtension/interval.html">interval</a></li> <li><a href="https://pub.dev/documentation/rxdart/latest/rx/MapNotNullExtension/mapNotNull.html">mapNotNull</a></li> <li><a href="https://pub.dev/documentation/rxdart/latest/rx/MapToExtension/mapTo.html">mapTo</a></li> <li><a href="https://pub.dev/documentation/rxdart/latest/rx/MaterializeExtension/materialize.html">materialize</a></li> <li><a href="https://pub.dev/documentation/rxdart/latest/rx/MaxExtension/max.html">max</a></li> <li><a href="https://pub.dev/documentation/rxdart/latest/rx/MergeExtension/mergeWith.html">mergeWith</a></li> <li><a href="https://pub.dev/documentation/rxdart/latest/rx/MinExtension/min.html">min</a></li> <li><a href="https://pub.dev/documentation/rxdart/latest/rx/OnErrorExtensions/onErrorResume.html">onErrorResume</a></li> <li><a href="https://pub.dev/documentation/rxdart/latest/rx/OnErrorExtensions/onErrorResumeNext.html">onErrorResumeNext</a></li> <li><a href="https://pub.dev/documentation/rxdart/latest/rx/OnErrorExtensions/onErrorReturn.html">onErrorReturn</a></li> <li><a href="https://pub.dev/documentation/rxdart/latest/rx/OnErrorExtensions/onErrorReturnWith.html">onErrorReturnWith</a></li> <li><a href="https://pub.dev/documentation/rxdart/latest/rx/PairwiseExtension/pairwise.html">pairwise</a></li> <li><a href="https://pub.dev/documentation/rxdart/latest/rx/SampleExtensions/sample.html">sample</a></li> <li><a href="https://pub.dev/documentation/rxdart/latest/rx/SampleExtensions/sampleTime.html">sampleTime</a></li> <li><a href="https://pub.dev/documentation/rxdart/latest/rx/ScanExtension/scan.html">scan</a></li> <li><a href="https://pub.dev/documentation/rxdart/latest/rx/SkipLastExtension/skipLast.html">skipLast</a></li> <li><a href="https://pub.dev/documentation/rxdart/latest/rx/SkipUntilExtension/skipUntil.html">skipUntil</a></li> <li><a href="https://pub.dev/documentation/rxdart/latest/rx/StartWithExtension/startWith.html">startWith</a></li> <li><a href="https://pub.dev/documentation/rxdart/latest/rx/StartWithManyExtension/startWithMany.html">startWithMany</a></li> <li><a href="https://pub.dev/documentation/rxdart/latest/rx/SwitchIfEmptyExtension/switchIfEmpty.html">switchIfEmpty</a></li> <li><a href="https://pub.dev/documentation/rxdart/latest/rx/SwitchMapExtension/switchMap.html">switchMap</a></li> <li><a href="https://pub.dev/documentation/rxdart/latest/rx/TakeLastExtension/takeLast.html">takeLast</a></li> <li><a href="https://pub.dev/documentation/rxdart/latest/rx/TakeUntilExtension/takeUntil.html">takeUntil</a></li> <li><a href="https://pub.dev/documentation/rxdart/latest/rx/TakeWhileInclusiveExtension/takeWhileInclusive.html">takeWhileInclusive</a></li> <li><a href="https://pub.dev/documentation/rxdart/latest/rx/ThrottleExtensions/throttle.html">throttle</a></li> <li><a href="https://pub.dev/documentation/rxdart/latest/rx/ThrottleExtensions/throttleTime.html">throttleTime</a></li> <li><a href="https://pub.dev/documentation/rxdart/latest/rx/TimeIntervalExtension/timeInterval.html">timeInterval</a></li> <li><a href="https://pub.dev/documentation/rxdart/latest/rx/TimeStampExtension/timestamp.html">timestamp</a></li> <li><a href="https://pub.dev/documentation/rxdart/latest/rx/WhereNotNullExtension/whereNotNull.html">whereNotNull</a></li> <li><a href="https://pub.dev/documentation/rxdart/latest/rx/WhereTypeExtension/whereType.html">whereType</a></li> <li><a href="https://pub.dev/documentation/rxdart/latest/rx/WindowExtensions/window.html">window</a></li> <li><a href="https://pub.dev/documentation/rxdart/latest/rx/WindowExtensions/windowCount.html">windowCount</a></li> <li><a href="https://pub.dev/documentation/rxdart/latest/rx/WindowExtensions/windowTest.html">windowTest</a></li> <li><a href="https://pub.dev/documentation/rxdart/latest/rx/WindowExtensions/windowTime.html">windowTime</a></li> <li><a href="https://pub.dev/documentation/rxdart/latest/rx/WithLatestFromExtensions.html">withLatestFrom</a></li> <li><a href="https://pub.dev/documentation/rxdart/latest/rx/ZipWithExtension/zipWith.html">zipWith</a></li> </ul> <h3 id="subjects" class="hash-header">Subjects <a href="#subjects" class="hash-link">#</a></h3> <p>Dart provides the <a href="https://api.dart.dev/stable/dart-async/StreamController-class.html">StreamController</a> class to create and manage a Stream. RxDart offers two additional StreamControllers with additional capabilities, known as Subjects:</p> <ul> <li><a href="https://pub.dev/documentation/rxdart/latest/rx/BehaviorSubject-class.html">BehaviorSubject</a> - A broadcast StreamController that caches the latest added value or error. When a new listener subscribes to the Stream, the latest value or error will be emitted to the listener. Furthermore, you can synchronously read the last emitted value.</li> <li><a href="https://pub.dev/documentation/rxdart/latest/rx/ReplaySubject-class.html">ReplaySubject</a> - A broadcast StreamController that caches the added values. When a new listener subscribes to the Stream, the cached values will be emitted to the listener.</li> </ul> <h2 id="rx-observables-vs-dart-streams" class="hash-header">Rx Observables vs Dart Streams <a href="#rx-observables-vs-dart-streams" class="hash-link">#</a></h2> <p>In many situations, Streams and Observables work the same way. However, if you're used to standard Rx Observables, some features of the Stream API may surprise you. We've included a table below to help folks understand the differences.</p> <p>Additional information about the following situations can be found by reading the <a href="https://pub.dev/documentation/rxdart/latest/rx/Rx-class.html">Rx class documentation</a>.</p> <table> <thead> <tr> <th>Situation</th> <th>Rx Observables</th> <th>Dart Streams</th> </tr> </thead> <tbody> <tr> <td>An error is raised</td> <td>Observable Terminates with Error</td> <td>Error is emitted and Stream continues</td> </tr> <tr> <td>Cold Observables</td> <td>Multiple subscribers can listen to the same cold Observable, and each subscription will receive a unique Stream of data</td> <td>Single subscriber only</td> </tr> <tr> <td>Hot Observables</td> <td>Yes</td> <td>Yes, known as Broadcast Streams</td> </tr> <tr> <td>Is {Publish, Behavior, Replay}Subject hot?</td> <td>Yes</td> <td>Yes</td> </tr> <tr> <td>Single/Maybe/Completable ?</td> <td>Yes</td> <td>Yes, uses <a href="https://pub.dev/documentation/rxdart_ext/latest/single/Single-class.html">rxdart_ext Single</a> (<code>Completable = Single&lt;void&gt;, Maybe&lt;T&gt; = Single&lt;T?&gt;</code>)</td> </tr> <tr> <td>Support back pressure</td> <td>Yes</td> <td>Yes</td> </tr> <tr> <td>Can emit null?</td> <td>Yes, except RxJava</td> <td>Yes</td> </tr> <tr> <td>Sync by default</td> <td>Yes</td> <td>No</td> </tr> <tr> <td>Can pause/resume a subscription*?</td> <td>No</td> <td>Yes</td> </tr> </tbody> </table> <h2 id="examples" class="hash-header">Examples <a href="#examples" class="hash-link">#</a></h2> <p>Web and command-line examples can be found in the <code>example</code> folder.</p> <h3 id="web-examples" class="hash-header">Web Examples <a href="#web-examples" class="hash-link">#</a></h3> <p>In order to run the web examples, please follow these steps:</p> <ol> <li>Clone this repo and enter the directory</li> <li>Run <code>dart pub get</code></li> <li>Run <code>dart run build_runner serve example</code></li> <li>Navigate to <a href="http://localhost:8080/web/index.html" rel="ugc">http://localhost:8080/web/index.html</a> in your browser</li> </ol> <h3 id="command-line-examples" class="hash-header">Command Line Examples <a href="#command-line-examples" class="hash-link">#</a></h3> <p>In order to run the command line example, please follow these steps:</p> <ol> <li>Clone this repo and enter the directory</li> <li>Run <code>pub get</code></li> <li>Run <code>dart examples/fibonacci/lib/example.dart 10</code></li> </ol> <h3 id="flutter-example" class="hash-header">Flutter Example <a href="#flutter-example" class="hash-link">#</a></h3> <h4 id="install-flutter">Install Flutter</h4> <p>To run the flutter example, you must have Flutter installed. For installation instructions, view the online <a href="https://flutter.io/" rel="ugc">documentation</a>.</p> <h4 id="run-the-app">Run the app</h4> <ol> <li>Open up an Android Emulator, the iOS Simulator, or connect an appropriate mobile device for debugging.</li> <li>Open up a terminal</li> <li><code>cd</code> into the <code>examples/flutter/github_search</code> directory</li> <li>Run <code>flutter doctor</code> to ensure you have all Flutter dependencies working.</li> <li>Run <code>flutter packages get</code></li> <li>Run <code>flutter run</code></li> </ol> <h2 id="notable-references" class="hash-header">Notable References <a href="#notable-references" class="hash-link">#</a></h2> <ul> <li><a href="https://api.dart.dev/stable/dart-async/Stream-class.html">Documentation on the Dart Stream class</a></li> <li><a href="https://www.dartlang.org/tutorials/language/streams" rel="ugc">Tutorial on working with Streams in Dart</a></li> <li><a href="https://reactivex.io/" rel="ugc">ReactiveX (Rx)</a></li> </ul> <h2 id="changelog" class="hash-header">Changelog <a href="#changelog" class="hash-link">#</a></h2> <p>Refer to the <a href="https://github.com/ReactiveX/rxdart/blob/master/packages/rxdart/CHANGELOG.md" rel="ugc">Changelog</a> to get all release notes.</p> <h2 id="extensions" class="hash-header">Extensions <a href="#extensions" class="hash-link">#</a></h2> <p>Check out <a href="https://pub.dev/packages/rxdart_ext">rxdart_ext</a>, which provides many extension methods and classes built on top of RxDart.</p> </section></div></div></div><aside class="detail-info-box"><a class="packages-scores" href="/packages/rxdart/score"><div class="packages-score packages-score-like"><div class="packages-score-value -has-value"><span class="packages-score-value-number">2.75k</span><span class="packages-score-value-sign"></span></div><div class="packages-score-label">likes</div></div><div class="packages-score packages-score-health"><div class="packages-score-value -has-value"><span class="packages-score-value-number">135</span><span class="packages-score-value-sign"></span></div><div class="packages-score-label">points</div></div><div class="packages-score packages-score-downloads" title="Number of downloads of this package during the past 30 days"><div class="packages-score-value -has-value"><span class="packages-score-value-number">4.55M</span><span class="packages-score-value-sign"></span></div><div class="packages-score-label">downloads</div></div></a><div class="detail-screenshot-thumbnail"><div class="thumbnail-container" data-thumbnail="/packages/rxdart/versions/0.28.0/gen-res/gen/logo.webp" data-thumbnail-descriptions-json="[&quot;The RxDart package logo.&quot;]" data-ga-click-event="screenshot-thumbnail-click"><img class="thumbnail-image" src="/packages/rxdart/versions/0.28.0/gen-res/gen/190x190/logo.webp" alt="screenshot" title="View screenshots" tabindex="0"/></div><img class="collections-icon" src="/static/hash-j60jq2j3/img/collections_white_24dp.svg" alt="" width="30" height="30" role="presentation"/></div><h3 class="title">Publisher</h3><p><a href="/publishers/fluttercommunity.dev"><img class="-pub-publisher-shield filter-invert-on-dark" src="/static/hash-j60jq2j3/img/material-icon-verified.svg" alt="verified publisher" width="14" height="14" title="Published by a pub.dev verified publisher"/>fluttercommunity.dev</a></p><h3 class="title">Weekly Downloads</h3><div id="-weekly-downloads-sparkline" class="weekly-downloads-sparkline" data-widget="weekly-sparkline" data-weekly-sparkline-points="gM/tZ0XdEABt4Q8AV/IOAH0PEAB2rREASOoPACDDDwCgIg8AEeYQAGhUEACeCg8A3zoOAH1cDADg4QYAD70JAFAWDwBsuRAAikwOALuxDgBEnw4AVbAOAKFEDgD+zQ8A1UAQAI7nDgCaMw4ANuENAGFxDgCmqQwAhb8OADYUDQDojg0ADdENADfdCwCayQwACi4NACnfDADS0QsAm4cMADyqDACmyQ4AIgwMAOrlCwBRkgsAKzAIAHCyCAD5bwgABVEIAC41CAA4ZAkAL5UJAAncCAA="></div><h3 class="title pkg-infobox-metadata">Metadata</h3><p>RxDart is an implementation of the popular ReactiveX api for asynchronous programming, leveraging the native Dart Streams api. </p><p><a class="link" href="https://github.com/ReactiveX/rxdart" rel="ugc">Repository (GitHub)</a><br/><a class="link" href="https://github.com/ReactiveX/rxdart/blob/master/CONTRIBUTING.md" rel="ugc">Contributing</a><br/></p><h3 class="title">Topics</h3><p><a class="topics-tag" href="/packages?q=topic%3Arxdart" rel="nofollow">#rxdart</a> <a class="topics-tag" href="/packages?q=topic%3Areactive-programming" rel="nofollow">#reactive-programming</a> <a class="topics-tag" href="/packages?q=topic%3Astreams" rel="nofollow">#streams</a> <a class="topics-tag" href="/packages?q=topic%3Aobservables" rel="nofollow">#observables</a> <a class="topics-tag" href="/packages?q=topic%3Arx" rel="nofollow">#rx</a></p><h3 class="title">Documentation</h3><p><a class="link" href="/documentation/rxdart/latest/">API reference</a><br/></p><h3 class="title">License</h3><p><img class="inline-icon-img filter-invert-on-dark" src="/static/hash-j60jq2j3/img/material-icon-balance.svg" alt="" width="14" height="14" role="presentation"/>Apache-2.0 (<a href="/packages/rxdart/license">license</a>)</p><h3 class="title">More</h3><p><a href="/packages?q=dependency%3Arxdart" rel="nofollow">Packages that depend on rxdart</a></p></aside></div><script type="application/ld+json">{"@context":"http\u003a\u002f\u002fschema.org","@type":"SoftwareSourceCode","name":"rxdart","version":"0.28.0","description":"rxdart - RxDart is an implementation of the popular ReactiveX api for asynchronous programming, leveraging the native Dart Streams api.\u000a","url":"https\u003a\u002f\u002fpub.dev\u002fpackages\u002frxdart","dateCreated":"2015-10-20T20\u003a07\u003a19.824Z","dateModified":"2024-06-14T09\u003a20\u003a00.219416Z","programmingLanguage":"Dart","image":"https\u003a\u002f\u002fpub.dev\u002fstatic\u002fimg\u002fpub-dev-icon-cover-image.png","license":"https\u003a\u002f\u002fpub.dev\u002fpackages\u002frxdart\u002flicense"}</script></div><div class="detail-metadata"><h3 class="detail-metadata-title"><span class="detail-metadata-toggle">←</span> Metadata</h3><div class="detail-info-box"><a class="packages-scores" href="/packages/rxdart/score"><div class="packages-score packages-score-like"><div class="packages-score-value -has-value"><span class="packages-score-value-number">2.75k</span><span class="packages-score-value-sign"></span></div><div class="packages-score-label">likes</div></div><div class="packages-score packages-score-health"><div class="packages-score-value -has-value"><span class="packages-score-value-number">135</span><span class="packages-score-value-sign"></span></div><div class="packages-score-label">points</div></div><div class="packages-score packages-score-downloads" title="Number of downloads of this package during the past 30 days"><div class="packages-score-value -has-value"><span class="packages-score-value-number">4.55M</span><span class="packages-score-value-sign"></span></div><div class="packages-score-label">downloads</div></div></a><div class="detail-screenshot-thumbnail"><div class="thumbnail-container" data-thumbnail="/packages/rxdart/versions/0.28.0/gen-res/gen/logo.webp" data-thumbnail-descriptions-json="[&quot;The RxDart package logo.&quot;]" data-ga-click-event="screenshot-thumbnail-click"><img class="thumbnail-image" src="/packages/rxdart/versions/0.28.0/gen-res/gen/190x190/logo.webp" alt="screenshot" title="View screenshots" tabindex="0"/></div><img class="collections-icon" src="/static/hash-j60jq2j3/img/collections_white_24dp.svg" alt="" width="30" height="30" role="presentation"/></div><h3 class="title">Publisher</h3><p><a href="/publishers/fluttercommunity.dev"><img class="-pub-publisher-shield filter-invert-on-dark" src="/static/hash-j60jq2j3/img/material-icon-verified.svg" alt="verified publisher" width="14" height="14" title="Published by a pub.dev verified publisher"/>fluttercommunity.dev</a></p><h3 class="title">Weekly Downloads</h3><div id="-weekly-downloads-sparkline" class="weekly-downloads-sparkline" data-widget="weekly-sparkline" data-weekly-sparkline-points="gM/tZ0XdEABt4Q8AV/IOAH0PEAB2rREASOoPACDDDwCgIg8AEeYQAGhUEACeCg8A3zoOAH1cDADg4QYAD70JAFAWDwBsuRAAikwOALuxDgBEnw4AVbAOAKFEDgD+zQ8A1UAQAI7nDgCaMw4ANuENAGFxDgCmqQwAhb8OADYUDQDojg0ADdENADfdCwCayQwACi4NACnfDADS0QsAm4cMADyqDACmyQ4AIgwMAOrlCwBRkgsAKzAIAHCyCAD5bwgABVEIAC41CAA4ZAkAL5UJAAncCAA="></div><h3 class="title pkg-infobox-metadata">Metadata</h3><p>RxDart is an implementation of the popular ReactiveX api for asynchronous programming, leveraging the native Dart Streams api. </p><p><a class="link" href="https://github.com/ReactiveX/rxdart" rel="ugc">Repository (GitHub)</a><br/><a class="link" href="https://github.com/ReactiveX/rxdart/blob/master/CONTRIBUTING.md" rel="ugc">Contributing</a><br/></p><h3 class="title">Topics</h3><p><a class="topics-tag" href="/packages?q=topic%3Arxdart" rel="nofollow">#rxdart</a> <a class="topics-tag" href="/packages?q=topic%3Areactive-programming" rel="nofollow">#reactive-programming</a> <a class="topics-tag" href="/packages?q=topic%3Astreams" rel="nofollow">#streams</a> <a class="topics-tag" href="/packages?q=topic%3Aobservables" rel="nofollow">#observables</a> <a class="topics-tag" href="/packages?q=topic%3Arx" rel="nofollow">#rx</a></p><h3 class="title">Documentation</h3><p><a class="link" href="/documentation/rxdart/latest/">API reference</a><br/></p><h3 class="title">License</h3><p><img class="inline-icon-img filter-invert-on-dark" src="/static/hash-j60jq2j3/img/material-icon-balance.svg" alt="" width="14" height="14" role="presentation"/>Apache-2.0 (<a href="/packages/rxdart/license">license</a>)</p><h3 class="title">More</h3><p><a href="/packages?q=dependency%3Arxdart" rel="nofollow">Packages that depend on rxdart</a></p></div><p class="detail-lead-back"><a class="detail-metadata-toggle">Back</a></p></div><div id="-screenshot-carousel" class="carousel"><fab id="-carousel-prev" class="mdc-fab carousel-prev carousel-nav" data-mdc-auto-init="MDCRipple" title="Previous" data-ga-click-event="screenshot-carousel-prev-click" tabindex="0"><div class="mdc-fab__ripple"></div><img class="mdc-fab__icon" src="/static/hash-j60jq2j3/img/keyboard_arrow_left.svg" alt="previous" width="24" height="24" aria-hidden="true"/></fab><div id="-image-container" class="image-container"></div><fab id="-carousel-next" class="mdc-fab carousel-next carousel-nav" data-mdc-auto-init="MDCRipple" title="Next" data-ga-click-event="screenshot-carousel-next-click" tabindex="0"><div class="mdc-fab__ripple"></div><img class="mdc-fab__icon" src="/static/hash-j60jq2j3/img/keyboard_arrow_right.svg" alt="next" width="24" height="24" aria-hidden="true"/></fab><p id="-screenshot-description" class="screenshot-description"></p></div></main><footer class="site-footer"><a class="link" href="https://dart.dev/">Dart language</a><a class="link sep" href="/report?subject=package%3Arxdart&amp;url=https%3A%2F%2Fpub.dev%2Fpackages%2Frxdart">Report package</a><a class="link sep" href="/policy">Policy</a><a class="link sep" href="https://www.google.com/intl/en/policies/terms/">Terms</a><a class="link sep" href="https://developers.google.com/terms/">API Terms</a><a class="link sep" href="/security">Security</a><a class="link sep" href="https://www.google.com/intl/en/policies/privacy/">Privacy</a><a class="link sep" href="/help">Help</a><a class="link icon sep" href="/feed.atom"><img class="inline-icon" src="/static/hash-j60jq2j3/img/rss-feed-icon.svg" alt="RSS" width="20" height="20" title="RSS/atom feed"/></a><a class="link icon github_issue" href="https://github.com/dart-lang/pub-dev/issues/new"><img class="inline-icon" src="/static/hash-j60jq2j3/img/bug-report-white-96px.png" alt="bug report" width="20" height="20" title="Report an issue with this site"/></a></footer><script src="/static/hash-j60jq2j3/highlight/highlight-with-init.js" defer="defer"></script></body></html>

Pages: 1 2 3 4 5 6 7 8 9 10