Category Functional Programming
Top Functional Programming packages
Dart functional-programming libraries: monads, lenses, immutable data (dartz, result_dart, fresh)
| Rank | Package | Description | Downloads / day | Stars | Likes |
|---|---|---|---|---|---|
| #1 — | 🇺🇸 google.dev | Immutable collections based on the SDK collections. Each SDK collection class is split into a new immutable collection class and a corresponding mutable builder class.
| 193.5K | ★ 284 | 343 |
| #2 — | 🇺🇸 fluttercommunity.dev | RxDart is an implementation of the popular ReactiveX api for asynchronous programming, leveraging the native Dart Streams api.
| 149.4K | ★ 3.4K | 2.9K |
| #3 — | Functional Programming in Dart. Purify your Dart code using efficient immutable data structures, monads, lenses and other FP tools. | 17.7K | ★ 773 | 1.5K | |
| #4 — | 🇩🇪 schultek.dev | Give your types superpowers and spice up your generics. Make types great again. | 12.9K | ★ 21 | 30 |
| #5 — | 🇺🇸 karapetov.com | Yet another variation of the good old Maybe monad with eager execution written in Dart. | 9.3K | ★ 6 | 11 |
| #6 — | 🇮🇹 sandromaglione.com | Functional programming in Dart and Flutter. All the main functional programming types and patterns fully documented, tested, and with examples.
| 9.1K | ★ 622 | 1.1K |
| #7 — | 🇨🇭 lukas-renggli.ch | Reactive Extensions Library for Dart providing an API for asynchronous programming with observable streams. | 7.2K | ★ 13 | 12 |
| #8 — | 🇧🇷 flutterando.com.br | Result for dart. It is an implementation based on Kotlin Result and Swift Result. | 4.4K | ★ 59 | 174 |
| #9 — | 🇳🇱 spkersten.nl | Annotations and helpers for lenses for code generated with the `function_data_generator` package. | 4.2K | ★ 40 | 19 |
| #10 — | 🇺🇸 glasberg.dev | Immutable lists, sets, maps, and multimaps, which are as fast as their native mutable counterparts. Extension methods and comparators for native Dart collections. | 4K | ★ 229 | 408 |
| #11 — | Multiple results for dart. Inspired by dartz's Either and Kotlin's sealed classes | 1.2K | ★ 54 | 173 | |
| #12 — | 🇬🇧 onehundredandeighty.org | Build composable, reusable and type-safe lenses for Dart. | 1.1K | ★ 0 | 0 |
| #13 — | Simple union types using extension types. Types: the union of `int` and `String` is `Union2<int, String>`. Values: `42.u21` is `42` with type `Union2<int, Never>`. | 1K | ★ 17 | 16 | |
| #14 — | Either monad for Dart language and Flutter framework. Type-safe error handling, railway oriented programming. Supports Monad comprehensions, async map, async flatMap.
| 960 | ★ 9 | 22 | |
| #15 — | 🇩🇪 felix-blaschke.de | Supercharged brings all the comfort features from languages like Kotlin to all Dart developers. | 681 | ★ 305 | 34 |
| #16 — | 🇸🇬 duobase.io | Forus Labs' standard library extension. Utilities for date-times, timezones, collections, monads & more. | 675 | ★ 31 | 11 |
| #17 — | The power of lazy-evaluated enumerables in your hands! (A port of functional LINQ from the .NET library.) | 605 | ★ 85 | 156 | |
| #18 — | 🇬🇧 simphotonics.com | Cached lazy variables that can be marked for re-initialization and memoized single and double argument functions. | 501 | ★ 5 | 4 |
| #19 — | Definitions of Rust-like types, Option and Result, to promote safer programming. | 306 | ★ 42 | 51 | |
| #20 — | A Generic Double Linked List data structure. Allows constant time inserting at elements at both ends, before and after any element and constant time element deletion. | 263 | ★ 5 | 11 | |
| #21 — | Class definitions for pseudo-lists that simplify working with structures commonly encountered in combinatorics such as permutations, combinations and subsets. | 228 | ★ 12 | 65 | |
| #22 — | 🇩🇪 pascalwelsch.com | This project is a port of kotlin-stdlib for Dart/Flutter projects. It includes collections (KtList, KtMap, KtSet) with 150+ methods as well as other useful packages. | 185 | ★ 468 | 170 |
| #23 — | 🇩🇪 dev-cetera.com | A package inspired by functional programming, designed to enhance the structure, safety, and debuggability of mission-critical code. | 148 | ★ 6 | 13 |
| #24 — | ookamikb.dev | Functional batteries for Dart. Implementation of Either, Optional etc. | 138 | ★ 22 | 17 |
| #25 — | 🇩🇪 dev-cetera.com | Annotations for the df_safer_dart_lints package. | 138 | ★ 1 | 2 |
| #26 — | 🇸🇮 bizjak.dev | Kotlin-inspired scope functions implemented in Dart with the goal of executing a block of code within the context of an object | 121 | — | 20 |
| #27 — | minikin.me | Result Type for Dart. | 109 | ★ 12 | 34 |
| #28 — | myportal.social | A Dart implementation of the Result Monad which allows for more expressive result generation and processing without using exceptions. | 94 | — | 8 |
| #29 — | Useful extensions on Result class of async package. | 54 | ★ 1 | 0 | |
| #30 — | The Results Dart package provides a simple and type-safe way to handle results in your Dart and Flutter applications. It allows you to represent the outcome of an operation as either an error or a success and provides convenient methods for working with these results. | 40 | ★ 2 | 2 | |
| #31 — | 🇩🇪 cachapa.net | Dart implementation of Conflict-free Replicated Data Types (CRDTs). | 36 | ★ 189 | 81 |
| #32 — | 🇧🇷 flutterando.com.br | A command pattern implementation for Dart and Flutter using result_dart package. | 29 | ★ 8 | 33 |
| #33 — | xinthink.com | A set of useful extension methods for Dart collections, designed for the purpose of making it easier to write functional-programming-styled, concise Dart code. | 29 | ★ 7 | 17 |
| #34 — | A lightweight Dart library for Rust-like Option/Result types. Supports exhaustive pattern matching and provides helpers for None()/Err() propagation | 26 | ★ 20 | 13 | |
| #35 — | 🇩🇪 cachapa.net | Dart implementation of Conflict-free Replicated Data Types (CRDTs) using Sqlite | 24 | ★ 61 | 13 |
| #36 ▼ 2 | The simple library for Error Handling with functionnal programming concept | 24 | ★ 34 | 42 | |
| #37 — | 🇮🇱 yakov.codes | Functional programming essentials for Dart. Tail call optimization, partial application, memoization, and more. | 24 | ★ 17 | 14 |
| #38 — | 🇫🇷 supermuel.fr | Provides matchers to help unit-testing your apps when using functional programming types defined in the dartz package. | 22 | ★ 0 | 2 |
| #39 — | voyver.com | Idiomatic error handling capabilities to make your code safer, more maintainable, and errors easier to debug. Dart implementation of Rust's Result monad type and "anyhow" crate. | 19 | ★ 24 | 32 |
| #40 — | 🇲🇾 dukefirehawk.com | Packrat parser combinators that support static typing, generics, file spans, memoization, and more. | 18 | ★ 5 | 2 |
| #41 — | tekinu.ai | Supercharge Dart & Flutter with C++ STL architecture. Unlock zero-cost primitives, associative collections, memory views, and C++23 ranges. | 17 | ★ 0 | 3 |
| #42 — | voyver.com | A pure Dart implementation of Rust patterns. Types include Result, Option, Cell, Slice, Array, Iterator, Channels, Mutex, Path, etc. | 15 | ★ 141 | 16 |
| #43 — | 🇺🇸 google.dev | An explicit acyclic step dependency framework with concurrent evaluation and dependency injection. | 12 | ★ 508 | 20 |
| #44 — | 🇩🇰 ardaproject.org | Parser combinators for Dart with left recursion, stack-safe trampolining, typed errors, and lossless green/red syntax trees with resilient parsing and incremental reparse. | 12 | ★ 0 | 0 |
| #45 — | 🇱🇰 infoowly.com | Flutter Result is a lightweight and easy-to-use package that provides a custom Result type for handling the outcome of a method call in Flutter. | 10 | ★ 0 | 1 |
| #46 — | A simple posibility to return a Result with eiter success or failure. | 10 | ★ 3 | 7 | |
| #47 — | 🇨🇴 timsmart.co | A collection of functions and monads for functional programming in dart. | 10 | ★ 7 | 5 |
| #48 — | Generic immutable undo/redo ring for Dart. Type-safe CommandHistory<S> with Command<S> — maxSize cap, undo/redo labels, value equality, no Flutter dependency. | 8 | ★ 0 | 1 | |
| #49 — | 🇮🇳 maranix.in | A lightweight Dart utility package offering common abstractions and missing features to write safer, more expressive code. | 8 | ★ 0 | 1 |
| #50 — | A functional programming library for Dart and Flutter providing type-safe error handling with Either type, functional composition, and async support. | 8 | ★ 1 | 2 | |
| #51 ▼ 3 | A lightweight, zero-dependency functional error handling package for Dart 3. Built with sealed classes and pattern matching. | 7 | ★ 0 | 1 | |
| #52 — | The Result that allows to specify a list of expected errors. | 7 | ★ 1 | 0 | |
| #53 — | Railway-Oriented Programming for Dart. Build composable service objects that return Result values — never throw — using Success, Failure, and andThen. | 7 | ★ 1 | 1 | |
| #54 — | yaminokishi.com | A bedrock package providing the blueprints and abstract definitions necessary to build a scalable and maintainable Dart/Flutter application. | 7 | ★ 0 | 0 |
| #55 — | A lightweight, idiomatic Dart result type. Built on Dart 3 with zero dependencies. Features Trace<T,E>, Ok, Err, split, map, mapError and bind. | 7 | ★ 2 | 5 | |
| #56 — | flutter.sskplay.com | Multi type supported platform selector to write functional programming. | 6 | ★ 2 | 22 |
| #57 — | A library implementing functional zippers following Huet's paper. | 6 | ★ 1 | 2 | |
| #58 — | 🇦🇺 christianfindlay.com | Carefully crafted monads, such as Result and Option for exhaustive pattern matching in Dart. | 6 | ★ 6 | 6 |
| #59 — | hextools.0xba1.xyz | Typesafe error-handling for dart . An implementation of rust's `Result` type in dart. | 5 | ★ 17 | 16 |
| #60 ▲ 4 | Extension methods for Strings and lists, inspired by Haskell | 5 | ★ 1 | 12 | |
| #61 — | Some / Maybe / Option / Result / Nullable, like Haskel Maybe, Can avoid semantic confusion caused by returning null when returning a value | 5 | ★ 7 | 3 | |
| #62 — | 🇮🇳 fabriktool.com | A lightweight toolkit for functional-style types like Either, built for clarity and real-world use. | 4 | ★ 5 | 3 |
| #63 ▼ 2 | voyver.com | A pure Dart implementation of Rust patterns. Types include Result, Option, Cell, Slice, Array, Iterator, etc. Facilitates functional programming and error handling. | 4 | ★ 141 | 29 |
| #64 — | Functional programming (FP) kernel. Provides common FP datatypes like Option, Either, State, Validated, as well as collection hierarchy inspired by the Scala programming language.
| 4 | ★ 15 | 2 | |
| #65 — | A result monad with two subtypes representing a success or a failure | 4 | ★ 3 | 5 | |
| #66 — | 🇩🇪 muha.dev | Result class that stops errors from throwing by returning either a value or an error | 4 | ★ 1 | 2 |
| #67 ▼ 2 | 🇮🇹 nepterius.it | A simple, fluent discriminated union of an error or a result. Inspired by ErrorOr for .net by Amantiband | 4 | ★ 2 | 5 |
| #68 — | 🇩🇪 zooper.dev | A Dart package for working with algebraic data types (ADTs) representing "any-of" values with multiple options. | 4 | ★ 1 | 2 |
| #69 — | apptakk.com | Return a result ErrorOr with either a value T or an error Object. | 3 | ★ 11 | 5 |
| #70 — | A performant and flexible reactive programming framework for Dart | 3 | ★ 1 | 5 | |
| #71 — | The generator for algebraic data types. | 3 | ★ 2 | 0 | |
| #72 — | Functional effect system with IO monad, safe concurrent state (Ref), and resource management and pure synchronziation primitive (Deferred).
| 3 | ★ 15 | 2 | |
| #73 — | Result and Option for Dart, with addition of FutureResult and do-notation. Inspired by fp_dart, dartz, and neverthrow for TypeScript. | 3 | ★ 0 | 1 | |
| #74 — | A versatile Dart algorithms library providing implementations of various algorithms.. | 3 | ★ 1 | 2 | |
| #75 — | HTTP-client agnostic error handling for Dart/Flutter — Either pattern, typed Failures, and a pluggable mapper chain. | 3 | ★ 1 | 2 | |
| #76 — | 🇺🇸 philiprehberger.com | Rust-style Result type for type-safe error handling with pattern matching | 2 | ★ 1 | 1 |
| #77 — | A Flutter package for simplified error handling and result type management using functional programming patterns. | 2 | ★ 2 | 2 | |
| #78 — | A Dart implementation similar to Kotlin scope functions, enable you for powerful chained programming style. | 2 | ★ 0 | 3 | |
| #78 — | 🇺🇸 luminucx.com | Commonly used standalone data structures, types and extensions that simplify application logic development. | 2 | — | 4 |
| #78 — | 🇨🇭 manuelplavsic.ch | A Dart library for Rust-like Option/Result types, providing a structured approach to error handling. | 2 | — | 8 |
| #81 — | Dart macros for algebraic types | 2 | ★ 8 | 2 | |
| #81 — | 🇨🇴 gmana.co | Convenience facade re-exporting gmana_functional, gmana_predicates, gmana_validation, gmana_utils, and gmana_extensions. | 2 | ★ 0 | 2 |
| #83 — | The Result<T> type implemented in Ok<T> and Err<T> types with unwrap methods. | 2 | — | 6 | |
| #83 — | 🇺🇸 taybiz.com | A Dart package providing an immutable data structure for managing unique ID pairs by type, with features for filtering, serialization, and validation. | 2 | ★ 0 | 1 |
| #85 ▼ 2 | Code generator for functional enum that makes the use of enums much better. | 2 | ★ 12 | 14 | |
| #86 — | lethephobia.com | Functional result and option monads supporting the AppleTheia Flutter DDD toolkit. | 2 | ★ 2 | 0 |
| #87 — | A lightweight Result type for Dart with functional helpers, async support, and zero dependencies. | 2 | ★ 0 | 2 | |
| #88 — | Functional Dart provides tools for writing functional code in Dart, emphasizing immutability, function composition, type safety, and avoiding the `dynamic` type. | 2 | ★ 1 | 3 | |
| #89 — | 🇨🇭 dekeyser.ch | A simple Dart package that provides immutable equatable's with the option to store the hashes. | 1 | ★ 1 | 4 |
| #90 — | 🇨🇱 hugop.cl | Implementation of the Result object which allows to handle errors easily using sealed classes. | 1 | ★ 3 | 5 |
| #91 — | 🇺🇦 mitryp.com.ua | An asynchronous Responsibility Chain design pattern implementation with functional and object-oriented approaches to implementing handlers of responsibility. | 1 | ★ 3 | 6 |
| #92 — | 🇷🇺 vorky.io | This package brings a Kotlin-like Result<T> to Dart, using extension types for zero-cost wrapping. | 1 | ★ 4 | 5 |
| #93 — | Helper classes that returns a Result or Errors objects to reduce amount of exception throwing. | 1 | ★ 4 | 4 | |
| #94 — | 🇪🇪 yakforward.com | a lightweight dart micro-package to help you handle functions results | 1 | ★ 13 | 4 |
| #95 — | Computable reals, or constructive real numbers in Dart. Approximates real numbers to arbitrary precision. | 1 | ★ 3 | 8 | |
| #95 — | Trve immutable wrapper classes for the Dart collections List, Set and Map. | 1 | ★ 2 | 3 | |
| #97 — | 🇺🇸 rohanchandra.dev | A trie data structure Dart implementation — useful for autocomplete. | 1 | ★ 7 | 7 |
| #98 — | A lightweight Result type for modeling success/failure in Flutter and Dart using sealed classes. | 1 | ★ 2 | 4 | |
| #99 — | 🇧🇷 jotapetecnologia.com.br | This package is a simple approach to return multiple values, inspired on dartz package. | 1 | ★ 1 | 4 |
| #99 — | 🇬🇧 atomsoftworks.com | A pure-Dart use case result wrapper that funnels thrown errors into typed success/failure values. Zero dependencies. | 1 | ★ 1 | 6 |
| #101 — | Annotations and helper stuff for algebraic data types that allows you to create immutable data classes and discriminated unions, that compare as value types. | 1 | ★ 1 | 1 | |
| #102 — | naifr.dev | Provides a Result type (Result<T>) for robust error handling, encapsulating either a success value or an error. Includes helpers for safe execution and chaining. | 1 | ★ 6 | 4 |
| #103 — | A dart implementation of Rusts Result type to make errors visible and make error handling easy | 1 | ★ 2 | 6 | |
| #104 — | 🇮🇹 sandromaglione.com | Efficient, immutable and stack safe implementation of a Trie data structure in dart: autocomplete, text search, spell checking, strings and prefixes.
| 1 | ★ 8 | 9 |
| #105 — | 🇩🇰 byolimit.com | A persistent treap for Dart.
A heap balanced randomized binary tree with efficient value semantics. | 1 | ★ 9 | 10 |
| #105 — | A small utility for representing values with two possible outcomes, commonly failure or success. | 1 | ★ 0 | 5 | |
| #107 — | 🇧🇷 kmartins.dev | Encapsulate a value as a success or an error as a failure using Result, execute a function using runCatching that returns a Result, and transform the Stream value into a Result. | 1 | ★ 3 | 6 |
| #107 — | andriiprokhorenko.com | A minimal, lawful Dart functional toolkit for composing synchronous and asynchronous workflows using continuation-passing style (CPS).
| 1 | ★ 6 | 6 |
| #109 — | 🇺🇸 fluttercommunity.dev | Sealed Unions for Dart | 1 | ★ 66 | 47 |
| #110 — | 🇧🇷 dig.dev.br | Provide methods to handle Result mapping and chaining with asynchronous operations. | 1 | ★ 0 | 0 |
| #111 — | nullx_either is a collection of elegant extensions for handling null types on dartz either types. | 0 | ★ 38 | 0 |
