如何从Dart中的列表中获取随机元素?

如何从Dart中的列表中获取随机元素?,dart,Dart,如何从Dart中的集合中检索随机元素 var list=['a'、'b'、'c'、'd'、'e']; 导入“省道:数学”; 变量列表=['a'、'b'、'c'、'd'、'e']; //生成一个新的随机对象 最终随机=新随机(); //根据列表长度生成随机索引 //并使用它检索元素 var元素=列表[_random.nextInt(list.length)]; 这同样有效: var list = ['a','b','c','d','e']; //this actually changes the

如何从Dart中的集合中检索随机元素

var list=['a'、'b'、'c'、'd'、'e'];
导入“省道:数学”;
变量列表=['a'、'b'、'c'、'd'、'e'];
//生成一个新的随机对象
最终随机=新随机();
//根据列表长度生成随机索引
//并使用它检索元素
var元素=列表[_random.nextInt(list.length)];
这同样有效:

var list = ['a','b','c','d','e'];

//this actually changes the order of all of the elements in the list 
//randomly, then returns the first element of the new list
var randomItem = (list..shuffle()).first;
或者,如果不想弄乱列表,请创建副本:

var randomItem = (list.toList()..shuffle()).first;
你可以使用这个软件包来帮助你

import'包:dart_random_choice/dart_random_choice.dart';
变量列表=['a'、'b'、'c'、'd'、'e'];
var el=随机选择(列表);

我刚刚为列表创建了一个扩展方法

import 'dart:math';

extension RandomListItem<T> on List<T> {
  T randomItem() {
    return this[Random().nextInt(length)];
  }
}
例如:

Scaffold(
      body: SafeArea(
        child: isItLogin
            ? Lottie.asset('assets/lottie/53888-login-icon.json')
            : Lottie.asset(LottieAssets.loadingAssets.randomItem()),
      ),
    );

这不会弄乱整个列表?是的,@GabrielDeOliveiraRohden,这实际上会随机更改列表中所有元素的顺序,然后返回新列表的第一个元素。@Mason所以这会对原始列表产生影响,而不会生成新的列表。。洗牌后要处理的副作用很好:DinDect,我编辑了答案,添加了一种方法,如果需要的话,可以不弄乱原始列表,这取决于你想要什么。
List.randomItem()
Scaffold(
      body: SafeArea(
        child: isItLogin
            ? Lottie.asset('assets/lottie/53888-login-icon.json')
            : Lottie.asset(LottieAssets.loadingAssets.randomItem()),
      ),
    );