NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
pub.dev · #420 most downloaded on pub.dev
Superpowers for Dart. Collection of useful static extension methods.
Last release 3 years ago
no release in 18 months
Release timing varies
gaps range from 1 weeks to 1.3 years
Most releases are documented
notes for 16 of 24 stable releases
Nothing withdrawn
no release was ever pulled
12 years old
24 releases · first in 2014
Official Dart 3.0 release General cleanup and CI update
PR-151 New: String?.isNullOrBlank , String?.isNotNullOrBlank
String?.isNullOrBlank, String?.isNotNullOrBlankIterableForthItem -> IterableFourthItemint.toChar(): StringString?.orEmpty: boolString.matches(RexExp): boolString.urlEncode and String.urlDecodebuildString to build a StringBuffer an immediately return itIterable.takeFirst(n) and Iterable.takeLast(n) crashed when n > lengthOne column per quarter.
Promote to stable version Remove deprecated extensions
PR-136 New: Multiple extensions for Map . all() , any() , count() , filter() , filterKeys() , filterNot , filterValues , getOrElse() , mapEntries() ,
Map. all(), any(), count(), filter(), filterKeys(), filterNot, filterValues, getOrElse(), mapEntries(), mapKeys(), mapValues(), maxBy(), maxWith(), minBy(), minWith, none(), toList(), toMap(), orEmpty()sumBy is now generic and works equally for num/int/doublemin()/max() which returned the wrong item for reversed ordered listsplus()/minus() and plusOrNull/minusOrNull to num which handle nullIterable.second returns T instead of T?. Analog to firstisUpperCase/isLowerCase now threat only [a-zA-Z] chars as being uppercaseAlso, all linting issues have been fixed and the README has been drastically improved. Thanks @minhqdao
PR-126 Improve runtime of elementAtOrNull for List
Undeprecate firstOrNullWhere until dartx can export package:collection itself
show/hide. This allows the usage of package:collection and dartx in the same file.firstOrNullWhere until dartx can export package:collection itselfDirectory.file and Directory.directory extensions to quickly create file/directory referencestime packageFix minBy , maxBy NPE for empty lists
PR-94 Breaking: Iterable<T>.zip(other, transform) now supports zipping iterables of other types the T . This is a breaking change because it is now re…
Iterable<T>.zip(other, transform) now supports zipping iterables of other types the T. This is a breaking change because it is now required to add types in the transform function.
final amounts = [2, 3, 4];
final animals = ['dogs', 'birds', 'cats'];
final all = amounts.zip(animals, (int amount, String animal) => '$amount $animal');
// lambda types are now required: ⇧ ⇧
// all: ['2 dogs', '3 birds', '4 cats']String extensions
String removePrefix(String prefix)String removeSuffix(String suffix)String removeSurrounding({String prefix, String suffix})final name = 'James Bond'.removePrefix('James '); // Bond
final milliseconds = '100ms'.removeSuffix('ms'); // 100
final text = '<p>Some HTML</p>'.removeSurrounding(prefix: '<p>', suffix: '</p>'); // Some HTMLList extension void swap(int, int) which swaps the elements in the indices provided.
final list = [1, 2, 3, 4];
list.swap(0, 2); // [3, 2, 1, 4]collection to support Flutter 1.20 (which uses collection: 1.3.0-nullsafety)cryptoIncrease dependency range of characters to include 1.0.0. Fixes #87
PR-84 Increase path version range to be compatible with Flutter 1.17
PR-75 Deprecate String.chars in favour of String.characters from the official characters package.
Iterable<T>.containsAny(Iterable<T>) extensionIterable<num>.median() extensionIterable<T>.asStream() extension converts any Iterable to a StreamIterable<T>.cached extension creates a cached Iterable preventing lazy operators such as .map to execute againIterable<Iterable<T>>.flatten() typesafe and return Iterable<T> instead of Iterable<dynamic>Iterable<T>.chunkWhile(bool Function(T, T) predicate): Iterable<List<E>> extension splits a collection into a lazy Iterables of chunks, where chunks are created as long as predicate is true for a pair of entries.Iterable<T>.splitWhen(bool Function(E, E) predicate): Iterable<List<E>> extension splits a collection into a lazy Iterable, where each split will be make if predicate returns true for a pair of entries.Iterable<Future<T>>.asStreamAwaited(): Stream<T> extension to create a stream from a group of futures.String.isNullOrEmpty extensionString.toInt({int radix}) extension as alias for int.parse(String, {int radix}) (also String.toIntOrNull({int radix}))String.chars in favour of String.characters from the official characters package.Comparable<T>.rangeTo(Comparable<T> end) extension to create ranges of DateTime or String.num.between(num first, num endInclusive): bool extensionnum.inRange(Range<num> range): bool extensionComparable<T>.between(T first, T endInclusive): bool extensionComparable<T>.inRange(ComparableRange<T> range): bool extensionPR-17 Callable.invoke() is now marked as Deprecated in favour of darts call() method. It will not be removed though, until darts .call() methods gets…
int.rangeTo(int) extensionComparable <, <=, >= and > operators.quiver dependencyString.md5 to calculate a MD5 digestFileSystemEntity.withName(String newName) to get a File with a different nameFileSystemEntity.extension to get the file extensionCallable.invoke() is now marked as Deprecated in favour of darts call() method. It will not be removed though, until darts .call() methods gets auto-completion.Comparable.coerceIn(), Comparable.coerceAtLeast() and Comparable.coerceAtMost()num.toBytes().thenBy() and .thenWith() extensions for ListsIterable<E>.windowed - remove the required transform lambdaMoved to time.dart library for time extensions
time.dart library for time extensionsAdded Function.curry(), Function.invoke(), Function.partial() and Function.flip()
Function.curry(), Function.invoke(), Function.partial() and Function.flip()'string'.reversed now correctly handles grapheme clusters (like emoji)'string'.chars now returns the grapheme clusters instead of Runes- Bugfixes - More tests
- Initial release
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
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →