FxDart 101
Un curso práctico. Cada lección es una explicación breve con demos en vivo y un playground: el código se compila con el compilador real de Dart y se ejecuta en tu navegador. Recorre las secciones en orden o salta a cualquier función de abajo.
fx →
map →
filter →
take →
toList,
y luego
concurrent.
Trabajos:
búsqueda con debounce
·
fetch concurrente acotado.
📖 Teoría de programación funcional: el libro de texto detrás del curso →
📒 Míralo en acción: Daily Ledger — una app completa hecha con FxDart →
Sección 1 · Primeros pasos
El modelo de pipeline: se construye de forma perezosa y se ejecuta con un operador terminal.
Sección 2 · Generar secuencias
Fuentes desde las que puedes encadenar.
Sección 3 · Transformar
Remodela cada elemento, de forma perezosa.
Sección 4 · Filtrado & deduplicación
Quédate solo con lo que necesitas.
- where
- whereNot
- nonNulls
- distinct
- distinctBy
- uniqStrict
- uniqAdjacent
- takeUniqBy
- difference
- differenceBy
- intersection
- intersectionBy
- compress
Sección 5 · Segmentación
Ventanas, prefijos, sufijos y bloques.
- take
- takeLast
- takeWhile
- takeWhileRight
- takeUntilInclusive
- skip
- dropRight
- skipWhile
- dropWhileRight
- dropUntil
- slice
- chunk
- windowed
- pairwise
- split
Sección 6 · Combinar
Varias secuencias de entrada, una de salida.
- append
- prepend
- concat
- zip
- zip3
- zipWith
- indexed
- …WithIndex (map, filter, fold)
- transpose
- reverse
- fork
- tee
- tee3
- ifEmpty
Sección 7 · Agregar
Operadores terminales que recorren el pipeline y producen un valor.
- reduce
- fold
- foldRight
- reduceLazy
- sum
- sumBy
- average
- averageBy
- min
- max
- maxBy
- minBy
- count
- join
- groupBy
- groupedBy
- indexBy
- countBy
- foldBy
- foldByOrSkip
- countWhere
- sort
- sortBy
- sortByDesc
- partition
Sección 8 · Acceso & predicados
Obtén valores individuales y evalúa elementos.
- firstOrNull
- lastOrNull
- elementAtOrNull
- firstWhereOrNull
- indexWhere
- contains
- isEmpty
- every
- any
- predicates (isNull, isString, …)
Sección 9 · Funciones de objeto (Map)
Las utilidades de objeto de FxTS, portadas a los Map de Dart.
- fromEntries
- omit
- pick
- omitBy
- pickBy
- prop
- props
- mapValues
- evolve
- compactObject
- resolveProps
- isMatch
- matches
Sección 10 · Utilidades de funciones
Combinadores y helpers.
- identity
- always
- tap
- apply
- juxt
- fxPipe
- memoize
- negate
- not
- predicate combinators
- when
- unless
- throwError
- throwIf
- cases
- add
- gt · gte · lt · lte
- delay & sleep
- unicodeToList
- curried & uncurried
Sección 11 · Async & concurrencia
El modelo FxAsyncIterable: el gran punto fuerte de FxDart.
- toAsync
- async variants (mapAsync, …)
- Stream bridges
- concurrent
- mapConcurrent
- concurrentPool
- retry
- timeout
- using
- concurrent or parallel
- parallel
Sección 12 · Util
Limitación de tasa y aleatoriedad.
Sección 13 · Errores tipados
El enfoque de Arrow (Kotlin), portado: either, Raise, bind, ensure, acumulación de errores con Nel y validación fusionada con el pipeline. Código en línea recta, fallos tipados y ni una torre de wrappers.
- typed errors — full guide
- Either
- Either combinators
- either & Raise scope
- nullable
- NonEmptyList (Nel)
- accumulation (zipOrAccumulate, …)
- Either × pipelines
Sección 14 · Streams de eventos (push)
El lado push de FxDart: operadores al estilo Rx sobre Stream de Dart, con puentes hacia los pipelines pull.
- fxEvents
- constructors
- peek · whenComplete
- sampleOn
- combineLatest
- withLatestFrom
- switchMap
- mergeMap
- switchLatest
- mergeScan
- race
- waitAll
- combine
- stopOn
- chunkOn
- windowOn
- groupsBy
- spaceBy
- debounceOn
- retryOn
- onErrorResume
- attempt
- mapEither
- separated
- share
- shareReplay
- LiveValue
- FxSubscriptions
- materialize
Sección 15 · Trabajos
Programas que cruzan superficies — la razón de importar un paquete en lugar de tres.