random method

T? random({
  1. bool secure = false,
  2. bool remove = false,
  3. int? seed,
})

Returns random value from list. If list is empty then it returns null

var list = <int>[1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
var randomValue = list.random(); // 3 // 3 will not be removed from list

// If remove = true is passed as argument then polled random item will be removed from list

// before list is: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
var randomValue = list.random(remove: true); // 5

// after calling with remove = true
// [1, 2, 3, 4, 6, 7, 8, 9, 10]

// If secure = true is passed as argument then Random.secure() is used
var randomValue = list.random(secure: true); // 5

Implementation

T? random({bool secure = false, bool remove = false, int? seed}) {
  if (isEmpty) {
    return null;
  }
  Random random;
  if (secure) {
    random = Random.secure();
  } else if (seed != null) {
    random = Random(seed);
  } else {
    random = Random();
  }
  var randomIndex = random.nextInt(length);
  var item = this[randomIndex];
  if (remove) {
    removeAt(randomIndex);
  }
  return item;
}