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.
| 167.9K | ★ 283 | 342 |
| #2 — | 🇺🇸 fluttercommunity.dev | RxDart is an implementation of the popular ReactiveX api for asynchronous programming, leveraging the native Dart Streams api.
| 125.8K | ★ 3.4K | 2.9K |
| #3 — | Functional Programming in Dart. Purify your Dart code using efficient immutable data structures, monads, lenses and other FP tools. | 14.3K | ★ 773 | 1.5K | |
| #4 — | 🇩🇪 schultek.dev | Give your types superpowers and spice up your generics. Make types great again. | 10.3K | ★ 22 | 29 |
| #5 — | 🇺🇸 karapetov.com | Yet another variation of the good old Maybe monad with eager execution written in Dart. | 7.6K | ★ 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.
| 7.2K | ★ 616 | 1.1K |
| #7 — | 🇨🇭 lukas-renggli.ch | Reactive Extensions Library for Dart providing an API for asynchronous programming with observable streams. | 5.4K | ★ 13 | 12 |
| #8 — | 🇺🇸 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 | 405 |
| #9 — | 🇳🇱 spkersten.nl | Annotations and helpers for lenses for code generated with the `function_data_generator` package. | 3.7K | ★ 40 | 19 |
| #10 — | 🇧🇷 flutterando.com.br | Result for dart. It is an implementation based on Kotlin Result and Swift Result. | 3.2K | ★ 59 | 174 |
| #11 — | Multiple results for dart. Inspired by dartz's Either and Kotlin's sealed classes | 1.3K | ★ 54 | 173 | |
| #12 — | 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>`. | 896 | ★ 17 | 15 | |
| #13 — | 🇬🇧 onehundredandeighty.org | Build composable, reusable and type-safe lenses for Dart. | 697 | ★ 0 | 0 |
| #14 — | Either monad for Dart language and Flutter framework. Type-safe error handling, railway oriented programming. Supports Monad comprehensions, async map, async flatMap.
| 660 | ★ 9 | 21 | |
| #15 — | The power of lazy-evaluated enumerables in your hands! (A port of functional LINQ from the .NET library.) | 567 | ★ 85 | 156 | |
| #16 — | 🇬🇧 simphotonics.com | Cached lazy variables that can be marked for re-initialization and memoized single and double argument functions. | 527 | ★ 5 | 4 |
| #17 — | 🇩🇪 felix-blaschke.de | Supercharged brings all the comfort features from languages like Kotlin to all Dart developers. | 507 | ★ 306 | 34 |
| #18 — | 🇸🇬 duobase.io | Forus Labs' standard library extension. Utilities for date-times, timezones, collections, monads & more. | 473 | ★ 31 | 10 |
| #19 — | Definitions of Rust-like types, Option and Result, to promote safer programming. | 270 | ★ 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. | 236 | ★ 5 | 11 | |
| #21 — | Class definitions for pseudo-lists that simplify working with structures commonly encountered in combinatorics such as permutations, combinations and subsets. | 227 | ★ 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. | 182 | ★ 469 | 170 |
| #23 — | minikin.me | Result Type for Dart. | 121 | ★ 12 | 34 |
| #24 — | 🇸🇮 bizjak.dev | Kotlin-inspired scope functions implemented in Dart with the goal of executing a block of code within the context of an object | 120 | — | 20 |
| #25 — | 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. | 83 | ★ 2 | 2 | |
| #26 — | ookamikb.dev | Functional batteries for Dart. Implementation of Either, Optional etc. | 81 | ★ 22 | 17 |
| #27 — | tekinu.ai | Supercharge Dart & Flutter with C++ STL architecture. Unlock zero-cost primitives, associative collections, memory views, and C++23 ranges. | 77 | ★ 0 | 2 |
| #28 — | 🇩🇪 dev-cetera.com | A package inspired by functional programming, designed to enhance the structure, safety, and debuggability of mission-critical code. | 76 | — | 13 |
| #29 — | 🇩🇪 dev-cetera.com | Annotations for the df_safer_dart_lints package. | 63 | — | 1 |
| #30 — | myportal.social | A Dart implementation of the Result Monad which allows for more expressive result generation and processing without using exceptions. | 59 | — | 7 |
| #31 — | 🇩🇪 cachapa.net | Dart implementation of Conflict-free Replicated Data Types (CRDTs). | 51 | ★ 188 | 81 |
| #32 — | 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. | 47 | ★ 7 | 17 |
| #33 — | 🇮🇱 yakov.codes | Functional programming essentials for Dart. Tail call optimization, partial application, memoization, and more. | 34 | ★ 17 | 14 |
| #34 ▲ 2 | Useful extensions on Result class of async package. | 25 | ★ 1 | 0 | |
| #35 — | The simple library for Error Handling with functionnal programming concept | 24 | ★ 34 | 42 | |
| #36 — | 🇩🇪 muha.dev | Result class that stops errors from throwing by returning either a value or an error | 23 | ★ 1 | 2 |
| #37 — | 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. | 23 | ★ 24 | 32 |
| #38 — | 🇫🇷 supermuel.fr | Provides matchers to help unit-testing your apps when using functional programming types defined in the dartz package. | 23 | ★ 0 | 2 |
| #39 — | 🇧🇷 flutterando.com.br | A command pattern implementation for Dart and Flutter using result_dart package. | 18 | ★ 8 | 33 |
| #40 — | 🇩🇪 cachapa.net | Dart implementation of Conflict-free Replicated Data Types (CRDTs) using Sqlite | 17 | ★ 61 | 13 |
| #41 — | 🇺🇸 google.dev | An explicit acyclic step dependency framework with concurrent evaluation and dependency injection. | 17 | ★ 507 | 20 |
| #42 — | 🇩🇰 ardaproject.org | Parser combinator library for Dart with left recursion, stack-safe trampolining, typed errors, lazy error construction, and sealed ADT design. | 15 | ★ 0 | 0 |
| #43 — | 🇨🇴 gmana.co | A core Dart utility package providing extensions, validation utilities, and functional programming constructs for consistent development. | 15 | ★ 0 | 2 |
| #44 — | Railway-Oriented Programming for Dart. Build composable service objects that return Result values — never throw — using Success, Failure, and andThen. | 12 | ★ 1 | 0 | |
| #45 — | voyver.com | A pure Dart implementation of Rust patterns. Types include Result, Option, Cell, Slice, Array, Iterator, Channels, Mutex, Path, etc. | 12 | ★ 140 | 15 |
| #46 — | A lightweight Dart library for Rust-like Option/Result types. Supports exhaustive pattern matching and provides helpers for None()/Err() propagation | 10 | ★ 20 | 13 | |
| #47 — | 🇲🇾 dukefirehawk.com | Packrat parser combinators that support static typing, generics, file spans, memoization, and more. | 10 | ★ 5 | 2 |
| #48 — | A lightweight Result type for Dart with functional helpers, async support, and zero dependencies. | 9 | ★ 0 | 2 | |
| #49 — | Functional programming (FP) kernel. Provides common FP datatypes like Option, Either, State, Validated, as well as collection hierarchy inspired by the Scala programming language.
| 9 | ★ 14 | 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 — | The Result that allows to specify a list of expected errors. | 8 | ★ 1 | 0 | |
| #52 — | voyver.com | A pure Dart implementation of Rust patterns. Types include Result, Option, Cell, Slice, Array, Iterator, etc. Facilitates functional programming and error handling. | 8 | ★ 140 | 29 |
| #53 — | yaminokishi.com | A bedrock package providing the blueprints and abstract definitions necessary to build a scalable and maintainable Dart/Flutter application. | 7 | ★ 0 | 0 |
| #54 — | Functional effect system with IO monad, safe concurrent state (Ref), and resource management and pure synchronziation primitive (Deferred).
| 6 | ★ 14 | 2 | |
| #55 — | Some / Maybe / Option / Result / Nullable, like Haskel Maybe, Can avoid semantic confusion caused by returning null when returning a value | 6 | ★ 7 | 3 | |
| #56 — | 🇬🇧 atomsoftworks.com | A pure-Dart use case result wrapper that funnels thrown errors into typed success/failure values. Zero dependencies. | 6 | ★ 1 | 5 |
| #57 — | A library implementing functional zippers following Huet's paper. | 5 | ★ 1 | 2 | |
| #58 — | HTTP-client agnostic error handling for Dart/Flutter — Either pattern, typed Failures, and a pluggable mapper chain. | 5 | ★ 0 | 2 | |
| #59 — | 🇮🇹 nepterius.it | A simple, fluent discriminated union of an error or a result. Inspired by ErrorOr for .net by Amantiband | 4 | ★ 2 | 5 |
| #60 — | 🇮🇳 fabriktool.com | A lightweight toolkit for functional-style types like Either, built for clarity and real-world use. | 4 | ★ 6 | 3 |
| #61 — | A performant and flexible reactive programming framework for Dart | 4 | ★ 1 | 5 | |
| #62 — | Extension methods for Strings and lists, inspired by Haskell | 3 | ★ 1 | 12 | |
| #63 — | apptakk.com | Return a result ErrorOr with either a value T or an error Object. | 3 | ★ 11 | 5 |
| #64 — | 🇨🇱 hugop.cl | Implementation of the Result object which allows to handle errors easily using sealed classes. | 3 | ★ 3 | 5 |
| #65 ▲ 2 | Result and Option for Dart, with addition of FutureResult and do-notation. Inspired by fp_dart, dartz, and neverthrow for TypeScript. | 3 | ★ 0 | 1 | |
| #65 — | 🇩🇪 zooper.dev | A Dart package for working with algebraic data types (ADTs) representing "any-of" values with multiple options. | 3 | ★ 1 | 2 |
| #67 — | flutter.sskplay.com | Multi type supported platform selector to write functional programming. | 3 | ★ 2 | 22 |
| #68 — | hextools.0xba1.xyz | Typesafe error-handling for dart . An implementation of rust's `Result` type in dart. | 3 | ★ 17 | 16 |
| #69 — | 🇺🇸 philiprehberger.com | Rust-style Result type for type-safe error handling with pattern matching | 2 | ★ 1 | 1 |
| #70 — | 🇦🇺 christianfindlay.com | Carefully crafted monads, such as Result and Option for exhaustive pattern matching in Dart. | 2 | ★ 6 | 6 |
| #71 — | Functional Dart provides tools for writing functional code in Dart, emphasizing immutability, function composition, type safety, and avoiding the `dynamic` type. | 2 | ★ 1 | 3 | |
| #72 — | A versatile Dart algorithms library providing implementations of various algorithms.. | 2 | ★ 1 | 2 | |
| #73 — | 🇺🇸 luminucx.com | Commonly used standalone data structures, types and extensions that simplify application logic development. | 2 | — | 4 |
| #74 — | The Result<T> type implemented in Ok<T> and Err<T> types with unwrap methods. | 2 | — | 6 | |
| #75 — | Trve immutable wrapper classes for the Dart collections List, Set and Map. | 2 | ★ 2 | 3 | |
| #76 — | 🇨🇭 manuelplavsic.ch | A Dart library for Rust-like Option/Result types, providing a structured approach to error handling. | 2 | — | 8 |
| #77 — | Code generator for functional enum that makes the use of enums much better. | 2 | ★ 12 | 14 | |
| #78 — | A result monad with two subtypes representing a success or a failure | 2 | ★ 3 | 5 | |
| #79 — | 🇪🇪 yakforward.com | a lightweight dart micro-package to help you handle functions results | 1 | ★ 13 | 4 |
| #80 — | A simple posibility to return a Result with eiter success or failure. | 1 | ★ 3 | 7 | |
| #81 ▼ 2 | 🇷🇺 vorky.io | This package brings a Kotlin-like Result<T> to Dart, using extension types for zero-cost wrapping. | 1 | ★ 4 | 5 |
| #82 — | A Dart implementation similar to Kotlin scope functions, enable you for powerful chained programming style. | 1 | ★ 0 | 3 | |
| #83 — | 🇺🇸 rohanchandra.dev | A trie data structure Dart implementation — useful for autocomplete. | 1 | ★ 7 | 7 |
| #84 ▼ 2 | Helper classes that returns a Result or Errors objects to reduce amount of exception throwing. | 1 | ★ 4 | 4 | |
| #85 — | Computable reals, or constructive real numbers in Dart. Approximates real numbers to arbitrary precision. | 1 | ★ 3 | 8 | |
| #85 — | 🇮🇹 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 |
| #87 — | 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 | ★ 5 | 4 |
| #88 — | 🇺🇸 fluttercommunity.dev | Sealed Unions for Dart | 1 | ★ 66 | 47 |
| #89 — | andriiprokhorenko.com | A minimal, lawful Dart functional toolkit for composing synchronous and asynchronous workflows using continuation-passing style (CPS).
| 1 | ★ 6 | 6 |
| #90 — | 🇺🇦 mitryp.com.ua | An asynchronous Responsibility Chain design pattern implementation with functional and object-oriented approaches to implementing handlers of responsibility. | 1 | — | 6 |
| #91 — | 🇩🇰 byolimit.com | A persistent treap for Dart.
A heap balanced randomized binary tree with efficient value semantics. | 1 | — | 10 |