Как сделать случайный генератор элементов списка?

У меня есть список:

    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(() {});
}
Другие вопросы по тегам