Как разделить виджеты внутри списка ListView.builder?

Есть ListView.builder в котором установлено значение itemCount: 5. Далее, внутрь ListView.builder я кладу созданный виджет, в котором есть кнопка, отвечающая за вызов функции. Мне необходимо сделать так, чтобы при нажатии на кнопку виджета, функция срабатывала не 5 раз, а 1. Не знаю как отделить виджеты друг от друга. Буду признателен за любую помощь, ссылку на пример.


Ответы (1 шт):

Автор решения: bear22

Попробуйте сделать так:

class MyHomePage extends StatefulWidget {
  @override
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  int _selectedIndex = 0; // выбранный индекс
  int _counter = 0; // счетчик

  @override
  Widget build(BuildContext context) {
    return Column(
      mainAxisAlignment: MainAxisAlignment.center,
      children: [
        Text('счетчик: $_counter'),
        ListView.builder(
            shrinkWrap: true,
            itemCount: 5,
            itemBuilder: (context, index) {
              return RaisedButton(
                  child: Text('+$index'),
                  onPressed: () {
                    _selectedIndex = index;

                    setState(() {
                      _counter +=  _selectedIndex;
                    });
                  });
            })
      ],
    );
  }
}
→ Ссылка