more 2.2.0

  • Readme
  • Changelog
  • Example
  • Installing
  • 91

More Dart — Literally #

Pub Package Build Status Coverage Status GitHub Issues GitHub Forks GitHub Stars GitHub License

Various extensions that make Dart a better place:

  • cache.dart is a collection of different caching strategies and their expiry policy.
  • char_matcher.dart is a model for character classes, their composition and operations on strings.
  • collection.dart is a collection of collection types (bi map, bit list, multi set, range, and string).
  • iterable.dart is a collection of iterables and iterators.
  • math.dart is a collection of common mathematical functions.
  • number.dart provides fractional, complex and quaternion arithmetic.
  • ordering.dart a fluent interface for building comparator functions.
  • printer.dart a fluent interface for configuring sophisticated formatter.
  • tuple.dart a generic sequence of typed values.

And there are more to come ...

This library is open source, stable and well tested. Development happens on GitHub. Feel free to report issues or create a pull-request there. General questions are best asked on StackOverflow.

The package is hosted on dart packages. Up-to-date class documentation is created with every release.

Misc #

Installation #

Follow the installation instructions on dart packages.

Import one or more of the packages into your Dart code using:

import 'package:more/cache.dart';
import 'package:more/char_matcher.dart';
import 'package:more/collection.dart';
import 'package:more/hash.dart';
import 'package:more/iterable.dart';
import 'package:more/math.dart';
import 'package:more/number.dart';
import 'package:more/ordering.dart';
import 'package:more/printer.dart';
import 'package:more/tuple.dart';

Contributing #

The goal of the library is to provide a loose collection of carefully curated utilities that are not provided by the Dart standard library. All features must be well tested. New features must have significant advantages over alternatives, such as code reduction, readability improvement, speed increase, memory reduction, or improved accuracy. In case of doubt, consider filing a feature request before filing a pull request.

History #

This library started in April 2013 as I was working through the puzzles of Project Euler and encountered some missing features in Dart. Over time the library grew and became more useful in many other places, so I created this reusable library.

License #

The MIT License, see LICENSE.

Changelog #

2.2.0 #

  • Made truncateToPeriod and periodical extension methods of DateTime.
  • Add extension methods to convert
    • a Map<K, V> to a BiMap<K, V>,
    • an Iterable<bool> to a BitList,
    • and an Iterable<T> to a Multiset<T>.

2.1.0 #

  • Cleanup Tuple class to be more readable and better typed.

2.0.0 #

  • Dart 2.7 compatibility and requirement.
  • Cleaned up deprecated code.
  • Iterables
    • Converted most helpers to extension methods.
    • Removed fold and fib, as they are not generally useful.
    • Moved digits to package:more/math.
  • Collections
    • Add extension method to int and double to create ranges, i.e.
    • Move the string lists to String.toList() extension method.
  • Math
    • Move all numerical operators to num, ìnt and/or BigInt (new).

1.18.0 #

  • Dart 2.4 compatibility and requirement.
  • Add a tuple data type.

1.17.0 #

  • Dart 2.3 compatibility and requirement.
  • Various code improvements and optimizations.

1.16.0 #

  • Dart 2.2 compatibility and requirement.

1.15.0 #

  • Deprecated package:more/int_math package, and moved all not-deprecated code to package:more/math.dart.
  • Add 'polyfills' for hyperbolic functions to the math package.
  • Add functionality for combining hash codes.

1.14.0 #

  • Quaternion numbers.

1.13.0 #

  • Rename Range.stop to Range.end to be consistent with Dart naming conventions.
  • Rename partition to chunked to be more consistent with Dart nomenclature.
  • Add the zip iterable.

1.12.0 #

  • Add the number package.
    • Move Fraction class into this package.
    • Add support for Complex numbers.
  • Add the groupBy iterable.

1.11.0 #

  • Add the printer package.

1.10.0 #

  • Drop Dart 1.0 compatibility.

1.9.0 #

  • Dart 2.0 strong-mode compatibility required the following breaking changes:
    • Replace callers of range() with either new IntegerRange() or new DoubleRange().
    • Removed padding argument from partition(). To migrate replace broken calls-sites with partitionWithPadding().

1.8.1 #

  • Removed empty(), emptyIterator(), emptyIterable() since these are part of the core library now.
  • Add periodic iterable tools (monthly, weekly, daily, hourly, ...).

1.8.0 #

  • Ordering.reversed, Ordering.nullsFirst, Ordering.nullsLast, and Ordering.lexicographical are now properties for consistency with the Iterable protocol.
  • Various optimization and improvements on the Range class.

1.7.2 #

  • Cleanup after micro library migration.
  • Move to latest Dart provided mixins.

1.7.1 #

  • Cleanup after micro library migration.
  • Address linter warnings.
  • Better test coverage.

1.7.0 #

  • Migrate to micro libraries.
  • Add caching library.

1.6.0 #

  • Use generic method syntax.

1.5.3 #

  • Fix pubspec SDK constraints.

1.5.2 #

  • Fix linter warnings.
  • Improve documentation.

1.5.1 #

  • Strong compiler compliant.

1.5.0 #

  • Fix various typos and linter issues.
  • Reformat documentation.

1.4.0 #

  • Migrate to Travis.


More Dart Examples #

This package does not currently contain examples to illustrate the use of More: However, some documentation and examples are contained in the package description and API documentation.

Use this package as a library

1. Depend on it

Add this to your package's pubspec.yaml file:

  more: ^2.2.0

2. Install it

You can install packages from the command line:

with pub:

$ pub get

with Flutter:

$ flutter pub get

Alternatively, your editor might support pub get or flutter pub get. Check the docs for your editor to learn more.

3. Import it

Now in your Dart code, you can use:

import 'package:more/cache.dart';
import 'package:more/char_matcher.dart';
import 'package:more/collection.dart';
import 'package:more/hash.dart';
import 'package:more/iterable.dart';
import 'package:more/math.dart';
import 'package:more/number.dart';
import 'package:more/ordering.dart';
import 'package:more/printer.dart';
import 'package:more/tuple.dart';
Describes how popular the package is relative to other packages. [more]
Code health derived from static analysis. [more]
Reflects how tidy and up-to-date the package is. [more]
Weighted score of the above. [more]
Learn more about scoring.

We analyzed this package on Jan 27, 2020, and provided a score, details, and suggestions below. Analysis was completed with status completed using:

  • Dart: 2.7.0
  • pana: 0.13.4


Package Constraint Resolved Available
Direct dependencies
Dart SDK >=2.7.0 <3.0.0
collection ^1.14.0 1.14.12
meta ^1.1.0 1.1.8
Dev dependencies
test ^1.9.0