Как сделать случайный генератор элементов списка?
У меня есть список:
List quotes = [
"Lmao this is text",
"Okay okay go to next",
"So, we are the champion nanana",
"Gagagagaga",
"What does the fox say?"
];
var _index = new Random();
И я хочу создать генератор случайного текста из моих элементов списка. Я использую statefull во флаттере, и когда я нажимаю кнопку, мне нужен новый случайный элемент из моего списка. Пример моего кода:
children: [
Text(quotes[_index]),
Center(
child: Container(
child: FlatButton.icon(
onPressed: _showFate(),
icon: Icon(Icons.casino),
label: Text("New words!", style: TextStyle(
color: Colors.white
),)),
_showFate() {
setState(() {
_index.nextInt(5);
});
Почему не работает не понимаю...
2 ответа
Решение
_index
должен быть int
не Random
и вы также должны переназначить случайное значение на _index
в setState
Проверь это.
int _index = 0;
_showFate(){
setState(() {
_index = Random().nextInt(5);
});
}
Просто используйте _index.nextInt(quotes.length)
внутри текстового виджета и вызовите setState для обновления:
children: [
Text(quotes[_index.nextInt(quotes.length)]),
Center(
child: Container(
child: FlatButton.icon(
onPressed: _showFate(),
icon: Icon(Icons.casino),
label: Text("New words!", style: TextStyle(
color: Colors.white
),)),
_showFate() {
setState(() {});
}