The Dart Bag-of-Tricks

A collection of (mostly) general libraries to make working with Dart more productive.

Starting by porting bits of the PL javascript library and Google's Closure javascript library to enable some interesting scenarios.

Build Status

Projects using BOT

Try It Now

The Dart Bag-of-Tricks ( BOT ) is hosted on Add the BOT package to your pubspec.yaml file, selecting a version range that works with your version of the SDK. Always check the BOT page on pub to find the latest release.

See the changelog to find the version that works best for you.

If you'd like to track bleeding edge developments, you can reference the the GitHub repository directly:



  • We follow Semantic Versioning.
  • We are not planning a V1 for BOT until Dart releases V1. In the mean time, the version will remain 0.Y.Z. Changes to the minor version - Y - will indicate breaking changes. * Changes to the patch version - Z - indicate non-breaking changes.

Dart SDK dependency

  • We're going to try to keep BOT in line with the latest integration build of the Dart SDK and Editor.
  • At this point, each SDK release tends to introduce breaking changes, which usually require breaking changes in BOT.
  • Keep an eye on the changelog to see how BOT aligns with each SDK release.

The libraries

bot -- default library

  • No dependencies on 3rd-party libraries.
  • Usable for browser-based projects and non-browser projects.


  • A general model for supporting extensible, runtime-defined events and properties on supported objects.

  • This functionality is inspired by the Dependency Object/Property model in WPF/Silverlight.


  • Array2d
  • Grouping of collections
  • ReadOnlyCollection


  • RgbColor, HslColor with associated conversions back and forth
  • RgbColor supports to/from hex


  • Easily raise and subscribe to events with custom, type-safe event objects.


  • Mostly classes related to 2D geometry and graphicsgeometry-related classes
  • Coordinate, Box, Size, Vector, AffineTransfrom


  • FutureValue: an abstract model for async conversions via Future<T>
  • SendPortValue: an implementation of FutureValue using isolates.