Я создал список во Flutter, используя Sliver (структура Sliver ниже):
return Scaffold(
body: CustomScrollView(
slivers: <Widget>[
SliverAppBar(
//leading: Icon(Icons.arrow_back),
expandedHeight: 150.0,
pinned: true,
),
SliverList(
delegate: SliverChildBuilderDelegate(
(BuildContext context, int index) {
final item = taskList[index];
return Card()
Карточка имеет скрытый виджет, внутри которого создается ListTile. Dismissible работает нормально, и я могу смахнуть, чтобы закрыть отдельные ячейки в списке.
Проблема, с которой я столкнулся, связана с IconButton в моем ListTile. Моя цель состоит в том, чтобы всякий раз, когда я нажимаю кнопку IconButton, он должен включать или выключать флаг значка для отдельной ячейки, но происходит то, что все кнопки со значками в списке переключаются. Изучив код отклоняемого виджета, я понял, что мне нужно однозначно идентифицировать каждую ячейку, чтобы это работало. Я пробовал использовать ключ, чтобы сделать ячейки уникальными, но это не сработало. Может ли кто-нибудь направить меня в правильном направлении? Код для IconButton приведен ниже. Я также попытался добавить ключ в ListTile, но это не сработало, поэтому я удалил его.
IconButton(
key: Key(item),
icon: Icon(Icons.flag),
color: (isPriority) ? Colors.red : Colors.grey,
onPressed: _toggleFlag,
)