sugar 3.1.0 sugar: ^3.1.0 copied to clipboard
Forus Labs' standard library extension. Utilities for date-times, timezones, collections, monads & more.
Sugar - Standard Library Extension #
Sugar is an extension to Dart's standard library.
It provides the following (and much more!):
- Date-time and timezone API inspired by
java.time
. - Monads such as
Result<S,F>
&Maybe<T>
. - Syntax sugar for aggregating & manipulating collections.
- Types for representing and working with ranges & intervals.
It consolidates several micro-packages that provide bits and pieces of date-time & timezone utilities into a single package.
Why Sugar's date-time API over other packages? #
-
Sugar is able to detect the platform's timezone,
ZonedDateTime.now()
. Other packages such astimezone
and even Dart's standard library don't.DateTime.timeZoneName
returns an ambiguous abbreviation that can refer to multiple timezones. Sugar provide a TZ database timezone identifier such asAsia/Singapore
. See List of timezone abbreviations. -
Sugar is less hassle to set up. You don't need to fiddle with assets or asynchronously initialize the library. Simply create a
ZonedDateTime
. -
Sugar has (in theory) zero initialization cost & a better memory footprint. Other packages often parse the timezone information from binary files at runtime. We rely on code generation to eliminate IO completely. Other packages often load the entire TZ database into memory. We rely on lazy initialization to load only timezones you use, reducing memory footprint.
-
Sugar handles DST transitions similar to other packages such as Java, Python & C#. Other packages such as
timezone
don't. This can be an issue when interacting between a back-end written in one of those languages and a front-end written in Dart. -
Sugar offers more than just
ZonedDateTime
. It offers classes such asLocalTime
&Period
, and utilities such as retrieving the ordinal week of the year.
Getting Started #
Run the following command:
dart pub add sugar
Alternatively, add Sugar as a dependency in your pubspec:
dependencies:
sugar: ^3.1.0
Import the library:
import 'package:sugar/sugar.dart';
Check out the documentation to get started.