Generating Random Values In Dart

In this post, we will learn to generate various kinds of random values in Dart for your Flutter application. As a bonus, we will cover generating a random number including both positive and negative numbers.


Often we need to work with random values in our application. Maybe we need to generate a random number to get a random item from a list. Or maybe we want to get a random decimal value. These are quite common scenarios. So how can we get these random values?

We can use the Random class which resides in the dart:math library for this purpose. Let’s play around with some examples.

DecisionMentor app

Getting Random Values With Random Class In Dart

First create an instance of Random object.

import 'dart:math';

void main() {
  var randomGenerator = Random();

Now we can use the randomGenerator for generating random values.

Random In Dart
Random In Dart

As shown above, we get various method options to generate random values.

Generating A Random Integer Number In Dart

Use the nextInt function to generate a random number. The max parameter allows to set the restriction for maximum allowed valid value when generating the random number.


The code above will generate a random number from 0 to 10.

Note: The maximum value is not included in the results but minimum is included.

Generating A Random Decimal Value

Similar to integer values, we can also generate random decimal values with the Random class object.


Unlike nextInt method, the nextDouble method doesn’t take any parameters. The results range from 0.0 to 1.0 with 1.0 being exclusive.

Generating A Random Boolean Value

Finally, we can use the nextBool method to generate a random boolean value in Dart.



Generating A Random Positive Or Negative Number In Dart

As you might have noticed, the Random class doesn’t have a direct implementation for generating a random number that includes a negative number. However, we can achieve generating a random that includes negative numbers in the following way:

int _generateRandomIncludingNegative(int max) {
  var randomGenerator = Random();
  var positive = randomGenerator.nextBool();
  var randInt = randomGenerator.nextInt(max);
  var result = positive ? randInt : 0 - randInt;
  return result;

The function _generateRandomIncludingNegative uses the combination of nextBool and nextInt to generate a random number including both positive and negative number. The number ranges from negative max to positve max.

For example the code below will return values from -5 to 5 excluding both -5 and 5.


Learn More: