NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
pub.dev · #759 most downloaded on pub.dev
More Dart — Literally. Collecting, iterating, caching, mathematics, matching, ordering, and formatting easily.
Last release 9 months ago
12 Dec 2025
Ships fairly regularly
a new release about every 3 months
Some releases are documented
notes for 35 of the last 60 stable releases
1 version withdrawn
withdrawn after publishing
13 years old
127 releases · first in 2013
Add Unicode Script property matchers (thanks to ).
Collection, an interface exposing the shared mutator operations of [List] and [Set].DisjointSet, a union-find data structure for tracking disjoint sets.Graph.vertexColoring algorithm for graph coloring.Dart and Flutter 3.9 compatibility.
Graph.hasCycle and Graph.isBipartite checks.Complex and Quaternion parsing.One column per quarter.
Dart 3.8 requirement and WASM support.
unicode: true option to String.toList().String.chunked and Characters.chunked.Deprecate some obscure and introduce more readable naming in Multiset and Multimap.
occurences helper to Iterableand SortedList.Multiset and Multimap.Comparable to a Comparator with delegateComparator.Add Bidirectional Character Types to UnicodeCharMatcher (thanks to ).
UnicodeCharMatcher (thanks to https://github.com/amake).Make IntegerRange and DoubleRange const constructable.
IntegerRange and DoubleRange const constructable.Graph.where(edgePredicate) for filtering by edge.Interval implementation to only support closed intervals.Fenwick and Interval trees.Improved Iterable.index to more common argument names, and support step.
Iterable.index to more common argument names, and support step.also scope operator, which significantly improves the possibility to write one-liners.Graph.toDot().Graph.where({Predicate<V> vertexPrediate}).Graph.copy({bool empty}).toString of Graph, Edge and Path classes.String.removeSuffix; and add String.partition and String.lastPartition.Iterable.minMax in one pass, and Iterable.gcd and Iterable.lcm.Heap: PriorityQueue from the Dart standard library provides the same functionality.SortedList implement PriorityQueue.Add a port of Python's difflib.
CharMatcher now works on all unicode code-points, correctly and efficiently matching unicode characters beyond UTF-16 bytes:
CharMatcher.pattern.CharMatcher.whitespace() is only matching ASCII whitespaces, to get the Unicode variant use UnicodeCharMatcher.whiteSpace().CharMatcher.punctuation() for ASCII punctuation characters.GraphBuilder with GraphFactory.Graph.getEdges with Graph.getEdge, add Graph.putEdge.double.nextUp, double.nextDown, double.nextTowards(double), and double.ulp.SortedList constructors.Fraction.Nothing published for this version
Improve code coverage, some minor fixes.
Improve code coverage, some minor fixes.
Tuple on top of records:
Tuple2<String, int> with (String, int).Tuple2('hello', 42) with ('hello', 42).Iterable.pairwise over the successive overlapping pairs.Iterable.deepFlatten over arbitrarily nested iterables.product and zip extensions on tuples of iterables.Nothing published for this version
Nothing published for this version
Add a growable BitList, make it behave more like List .
BitList, make it behave more like List<bool>.BitList operations: fill, count, and indices.throwFunction to Never.Map.withDefault providing a default value for non-existing keys.Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Deprecate Iterable.cycle in favor of Iterable.repeat.
BitList.indices that are true or false.RTree implementation.repeat for a single element.Iterable.groupBy and Iterable.indexed return instances of MapEntry for easier interoperability with Map.Range iterables.Iterable.combinations for empty iterables.List extensions takeTo, skipTo, takeLast, takeLastTo, skipLast, and skipLastTo.Iterable extension count and powerSet.Iterable.cycle in favor of Iterable.repeat.naturalComparator in favor of naturalCompare and naturalComparable<T>.Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Moved DateTime.periodical and DateTime.truncate to the new page, deprecated the old code.
String extensions take, takeTo, skip, skipTo, takeLast, takeLastTo, skipLast, and skipLastTo.temporal package unifying all DateTime and Duration related extensions:
DateTime.periodical and DateTime.truncate to the new page, deprecated the old code.DateTime: isLeapYear, daysInYear, daysInMonth, weeksInYear, quarter, weekYear, weekNumber, dayOfYear, and hour12.Duration objects to one or more (fractional) TimeUnits.printer package:
DateTimePrinter to print date and time objects.OrdinalNumberPrinter to print ordinal numbers: 1st, 2nd, 3rd, 4th, ...Printer.switcher to use different printers based on conditions.Printer.where to condition the printing on the printed object.Printer support for take, skip, takeLast and skipLast.Printer support for truncateRight, truncateLeft, and truncateCenter to also operate on word and sentence boundaries. Include the ellipsis in the width constraint.Printer.map, and replace with more common and intention revealing Printer.onResultOf.Ordering as static extensions methods on Comparator functions:
Comparator.binarySearchLower and Comparator.binarySearchUpper to return a lower/upper insertion index.Comparator.largest and Comparator.smallest to return the top/bottom-k elements.Ordering class and package.Interval to encapsulate bounded/unbounded and open/closed intervals across arbitrary Comparable objects.
Interval<int>.toIntLength() and Interval<num>.toDoubleLength().Interval<DateTime> to a Duration.SortedList collection type.CompareOperators mixin to provide operators given a compareTo method.Nothing published for this version
Add closeTo extension to all numbers.
closeTo extension to all numbers.Fraction support non-finite numbers.Add a max-heap collection type.
Better print strings across the library.
Remove deprecated hashAll and hash1, hash2, hash3, ... methods.
hashAll and hash1, hash2, hash3, ... methods.ObjectPrinter.addValue for more dynamic object printing.ToStringPrinter mixin for simpler use of ObjectPrinter.Stream.window along the existing Iterable.window extension (thanks to https://github.com/pihentagy).Deprecated hashAll and hash1, hash2, hash3, ... methods, since this is now supported through the core library on Object.
indent/dedent and wrap/unwrap to String.hashAll and hash1, hash2, hash3, ... methods, since this is now supported through the core library on Object.Nothing published for this version
Make Printer significantly faster by reusing a single StringBuffer instance where possible.
Printer significantly faster by reusing a single StringBuffer instance where possible.Printer strongly typed, which unfortunately comes with some required API changes:
BigInt.Printer library in various ways:
undefined to the more intention revealing ifNull.ifEmpty to print something specific for empty Iterables.map and cast printers for more flexible printing.ObjectPrinter.Add TypeMap that maps Dart types to an instance.
Optional and Either type.TypeMap that maps Dart types to an instance.String.convertFirstCharacters() and String.convertLastCharacters().String.toUpperCaseFirstCharacter() and String.toLowerCaseFirstCharacter().Nothing published for this version
Dart 2.12 requirement and null-safety.
package:clock and package:fake_async across the board.BigIntRange and optimize iteration of IntegerRange.ExpiryCache.maxAge of the Stream.buffer operator.Fraction.sign and Complex.sign.IterablePrinter to print lists.Ordering.natural.CharMatcher is now a Pattern.package:more/feature.dart to provide information about the runtime environment.Trie (prefix tree) collection type.Ordering.percentile.Iterable.toMap, Iterable.atRandom, Iterable.min, Iterable.max and Iterable.percentile.Range object creation and error reporting, and add Iterable.indices.toBiMap, toListMultimap, and toSetMultimap.String.removePrefix and String.removeSuffix.List.rotate and Queue.rotate.Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Dart 2.9 compatibility and requirement (in preparation of null-safety).
Iterable.concat() in favor of Iterable.flatten().Iterable.zip() into Interable.zip(), Iterable.zipPartial() and Iterable.zipPartialWith().Ordering.nullsFirst and Ordering.nullsLast.Tuple classes.Nothing published for this version
Add separatedBy, flatMap and flatten function on Iterable.
separatedBy, flatMap and flatten function on Iterable.printer package and improve documentation.Add repeat function on Iterable.
repeat function on Iterable.Printer package correctly trims, pads and separates unicode strings now.
Add in-place logical operators to BitList.
BitList.CharMatcher with lookup tables.Nothing published for this version
Add ListMultimap and SetMultimap.
ListMultimap and SetMultimap.CharMatcher, Cache and Ordering as immutable.Comparator to Ordering.Made truncateToPeriod and periodical extension methods of DateTime.
truncateToPeriod and periodical extension methods of DateTime.Map<K, V> to a BiMap<K, V>,Iterable<bool> to a BitList, andIterable<T> to a Multiset<T>.Cleanup Tuple class to be more readable and better typed.
Tuple class to be more readable and better typed.Nothing published for this version
Dart 2.7 compatibility and requirement.
fold and fib, as they are not generally useful.digits to package:more/math.int and double to create ranges, i.e. 0.to(20).String.toList() extension method.num, ìnt and/or BigInt (new).Nothing published for this version
Nothing published for this version
Dart 2.4 compatibility and requirement.
Dart 2.3 compatibility and requirement.
Dart 2.2 compatibility and requirement.
Your coding agent can read these notes before it upgrades. Set up the MCP server →