rnd 0.2.0 rnd: ^0.2.0 copied to clipboard
Extension methods & helpers for Random, and a globally accessible instance. Ex. rnd(10), rnd.getItem(list), rnd.getBit(0.8).
rnd package #
Makes working with random values in Dart / Flutter easier:
- It provides an easy to access, global instance of Random.
- It adds helpful extension methods to Random.
Global instance #
To make it easy to set up and propagate a Random
instance throughout your app, the rnd package exposes a
global instance via the rnd
property. This makes generating a random value as simple as:
import 'package:rnd/rnd.dart';
rnd(10); // random double between 0-10
rnd.getBool(0.8); // 80% chance to get true
You can also get and set the seed for the global instance via rndSeed
.
Extension methods on Random #
Adds the following methods to all instances of Random
. Read the docs for more info.
getInt(min, max, {curve})
// see "Curves" belowgetDouble(min, max, {curve})
getBool(chance)
getBit(chance)
// 0 or 1getSign(chance)
// -1 or 1getDeg()
// 0-360getRad()
// 0-2pigetColor({...})
// see docs for paramsgetItem(list, {remove, curve})
shuffle(list, {copy})
// randomize list
It also defines a call
method, which lets you get a random double value by calling a Random
instance directly:
Random myRandom = new Random();
print(myRandom()); // double between 0-1
print(myRandom(10)); // 0-10
print(myRandom(5,10)); // 5-10
This pairs well with the global instance for quickly getting random values:
new Point(rnd(maxX), rnd(maxY))
Curves #
The getDouble
, getInt
, and getItem
methods support a curve
param which transforms the value distribution. For example:
rnd.getInt(0, 100, curve: Curves.easeIn)
This would favor values nearer to 0, whereas easeOut
would favor values nearer to 100. The included example
app visualizes the effect of different curves.
Hue #
The included Hue
class provides named hue values for use with getColor
. For example:
rnd.getColor(hue: Hue.red); // red, green, blue, yellow, cyan, magenta