Я немного новичок, чтобы трепетать, и мне трудно с этой конкретной c проблемой. У меня есть listview.seperated виджеты, которые я пытаюсь удалить.
return ListView.separated
(
separatorBuilder: (context, index) => Divider(),
padding: const EdgeInsets.all(5.0),
itemCount: siteName.length + 1,
itemBuilder: (context, i) {
if (i != siteName.length) {
return _buildRow(siteName[i], i);
}
else
return _lastRow();
}
, поэтому внутри _buildrow я использую onDismissed, который работает, однако, когда я отклоняю его, оператор остается. Любая помощь о том, как именно я могу избавиться от этого?
Widget _buildRow(String pair, int num) {
final bool isClicked = (clicked == num);
return Dismissible
(
key: Key(pair),
onDismissed: (direction) {
setState(() {
siteName.removeAt(num);
lines.removeAt(num);
});
},
background: Container
(
padding: EdgeInsets.only(right: 10.0),
alignment: AlignmentDirectional.centerEnd,
color: Colors.red,
child: Icon
(
Icons.delete,
color: Colors.white,
)
),
child: ListTile
(
title: Text
(
pair,
style: _biggerFont,
),
trailing: Icon
(
isClicked ? Icons.check_circle : Icons.check_circle_outline,
color: isClicked ? Colors.green : Colors.black,
),
onTap: () {
setState(() {
if (isClicked) {
clicked = null;
} else {
clicked = num;
}
});
}
)
);
}