dartbag
A grab-bag of miscellaneous, lightweight utility code for Dart. Functionality includes (but is not limited to):
byte_data
List<int>.asUint8List
converts aList<int>
to aUint8List
without copying, if possible.
collection
-
flattenDeep
recursively flattens nestedIterable
s into a singleIterable
sequence. -
List.reverse
reverses aList
in place. rain -
List.rotateLeft
rotates aList
in place. -
List.sortWithKey
sorts aList
by computing and caching sort keys, which can be significantly faster if comparisons are expensive. -
List.sortWithAsyncKey
is a version ofsortWithKey
that allows the sort key to be computed asynchronously. -
Iterable.startsWith
returns whether oneIterable
starts with the same sequence of elements as anotherIterable
. -
Iterable.padLeft
andIterable.padRight
add elements to anIterable
to have a specified length. -
zipLongest
is a version ofzip
that stops only after the longestIterable
is exhausted instead of the shortest. -
LinkedHashMap.sort
. -
mergeMaps
s combines anIterable
ofMap
s into a singleMap
. -
Map<K, Future<V>>.wait
waits forFuture
values in aMap
(in parallel if possible).
comparable
-
clamp
clamps aComparable
object to be within a specified range. -
compareIterables
compares twoIterable
s in a manner similar to string comparison. -
ComparableWrapper
wraps a value in aComparable
interface with a specified comparison function.
debug
-
assertsEnabled
returns whetherassert
is enabled. -
currentDartFilePath
returns the path to the current.dart
file for Dart VM builds. -
staticType
returns the static type of an object. -
String.escape
escapes aString
such that it can be used as a string literal in generated code.
matcher
toStringMatches
verifies that a tested value has a matching type and string representation.
math
-
lcm
computes the least-common-multiple of two integers. -
int.floorToMultipleOf
,int.ceilToMultipleOf
, andint.roundToMultipleOf
provide different ways of rounding a non-negative integer to the nearest multiple of another. -
Rectangle.center
returns the center of aRectangle
.
misc
-
tryAs
casts an object and returnsnull
on failure instead of throwing aTypeError
. -
chainIf
allows conditional method chaining based on a condition. -
OutputParameter
allows specifying output parameters from functions as a crude mechanism to return multiple values. -
int.padLeft
converts anint
to aString
, left-padded with zeroes to have a minimum number of digits. -
String.lazySplit
is a version ofString.split
that returns anIterable
to tokenize aString
lazily. -
String.partialSplit
is a version ofString.split
that limits the number of returned items. -
String.substringLoose
is a version ofString.substring
with less strict bounds. -
Uri.updateQueryParameters
adds or replaces query parameters in aUri
. -
bool.implies
returns whether onebool
logically implies another. -
Future.cast
casts aFuture<T>
to aFuture<R>
. -
PollableFuture
is an implementation ofFuture
that allows synchronously retrieving the value if it has already been completed. -
hoursOnly
,minutesOnly
,secondsOnly
,millisecondsOnly
, andmicrosecondsOnly
retrieve specific components of aDuration
. -
DateTime.toStringWithOffset
andDateTime.toIso8601StringWithOffset
are versions ofDateTime.toString
andDateTime.totoIso8601String
that include timezone offsets.
parse
-
tryParseBool
parses abool
from aString?
. -
tryParseInt
andtryParseDouble
are wrappers aroundint.tryParse
anddouble.tryParse
that acceptnull
arguments. -
List<Enum>.tryParse
parses anEnum
value from aString?
. -
tryParseDuration
parses aDuration
from aString?
.
random
-
randMaxInt
portably returns the maximum value allowed byRandom.nextInt
. -
Random.nextIntFrom
returns a random integer in a specified range. -
lazyShuffler
shuffles aList
lazily. -
RepeatableRandom
wraps an existing pseudo-random number generator to allow a random sequence to be easily restarted and to allow the seed to be retrieved.
readable_numbers
-
readableDuration
returns aDuration
as a human-readable string. -
readableNumber
returns a number as a human-readable string with SI prefixes and units.
timer
ExpiringPeriodicTimer
is a periodicTimer
that automatically stops after a time limit.
tty
-
getTerminalSize
attempts to get the number of columns and lines of a terminal. -
wordWrap
wraps a string to a maximum line length. -
ArgResults.parseOptionValue
reduces some boilerplate when parsing option values frompackage:args
.
Libraries
- byte_data
- Utilities for operating on byte data.
- collection
- Utilities for collection types and Iterables.
- comparable
- Utilities for Comparable objects.
- debug
- Utilities to make debugging easier.
- matcher
- Custom
Matcher
s for tests. - math
- Mathematical-related utilities.
- misc
- Miscellaneous utilities.
- parse
- Utilities to parse objects from Strings.
- random
- Random number utilities.
- readable_numbers
- Makes numbers more human-readable by adding SI prefixes and units.
- timer
- Timer implementations with different behaviors.
- tty
- Utilities for command-line applications.