Skip to content

xinthink/collectionx.dart

Repository files navigation

collection_ext

Pub Check Status Code Coverage MIT

A set of extension methods for Dart collections, designed for the purpose of making it easier to write concise, functional-programming-styled Dart code.

Working on an Iterable for example, with collection_ext, we can write:

iterable.forEachIndexed((i, x) => /* use index i & element x */)

instead of:

var i = 0;
for (var x in iterable) {
  // use index i & element x
  i++;
}

Usage

Import all extension methods at once:

import 'package:collection_ext/all.dart';

Column(
  children: getItems()
    .nonNull
    .mapIndexed((i, item) => Text("#$i ${item.title}"))
    .asList(),
)

Or you can import the needed module only, for example:

import 'package:collection_ext/iterables.dart';

final diff = [2, 4, 6].foldRight(0, (x, acc) => x - acc);

Nullability

All extension methods of Iterables & Maps are null-safe. For example:

Iterable itr;
assert(itr.sum() == 0);

Map map;
assert(map.none((k, v) => true) == true);

See nullability tests for more details.

Available Modules

👉 See API Docs for more details

I'm working on more useful extensions, PRs are welcome! 🍻🖖