FxDart 101

A hands-on course. Every lesson is a short lecture with live demos and a playground — the code compiles with the real Dart compiler and runs in your browser. Work through the sections in order, or jump to any function below.

New here? Start with which surface — data in hand, I/O with a bound, events over time, or failures as values. Then the pull on-ramp: fxmapfiltertaketoList, then concurrent. Jobs: debounced search · bounded concurrent fetch.

📖 Functional Programming Theory — the textbook behind the course →

📒 See it in action: Daily Ledger — a full app built with FxDart →

Section 1 · Getting started

The pipeline model: build lazily, run with a terminal operator.

Section 2 · Generating sequences

Sources you can pipe from.

Section 3 · Transforming

Reshape each element — lazily.

Section 4 · Filtering & deduplication

Keep what you need.

Section 5 · Slicing

Windows, prefixes, suffixes, and chunks.

Section 6 · Combining

Multiple sequences in, one out.

Section 7 · Aggregating

Terminal operators that pull the pipeline and produce a value.

Section 8 · Access & predicates

Pull single values and test elements.

Section 9 · Object (Map) functions

FxTS object utilities, ported to Dart Maps.

Section 10 · Function utilities

Combinators and helpers.

Section 11 · Async & concurrency

The FxAsyncIterable model — FxDart's superpower.

Section 12 · Util

Rate limiting and randomness.

Section 13 · Typed errors

The Kotlin Arrow approach, ported: either, Raise, bind, ensure, error accumulation with Nel, and pipeline-fused validation. Straight-line code, typed failures, no wrapper tower.

Section 14 · Event streams (push)

FxDart's push side — Rx-style operators over plain Dart Streams, bridging into the pull pipelines.

Section 15 · Jobs

Cross-surface programs — the reason to import one package rather than three.