#flutter #android-listview #builder #listviewitem
Вопрос:
Я пытаюсь удалить конкретный список, когда нажимаю на кнопку, он удаляется, но он дублирует последнее значение списка, скажем, если длина списка равна 4, а я удалил 1 элемент, он удаляет это, но последний элемент списка появился снова, это означает, что он дублирует последний элемент.
вот мой код
//created the method to delete this list item
void _deleteItem(int index) {
setState(() {
historyList.removeAt(index);
});
}
Container(
padding: EdgeInsets.fromLTRB(10, 70, 0, 0),
child: FutureBuilder(
future: _getRecord(),
builder: (BuildContext context,
AsyncSnapshot<List<leaveHistory>> snapshot) {
if (snapshot.hasData) {
if(historyList.length!=0){
return Container(
padding: EdgeInsets.fromLTRB(0, 30, 0, 0),
child:Expanded(
child: ListView.builder(
itemCount: snapshot.data.length,
scrollDirection: Axis.vertical,
itemBuilder: (BuildContext context, int index) {
subtitle:Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text("Date: " snapshot.data[index].date,style: TextStyle(fontSize: 15),),
FlatButton(
child: Text("Approved",),
onPressed: (){
_deleteItem(index); //called method here
}
_getRecord()
это метод, в котором я извлекаю данные из api и добавляю их в historyList
пожалуйста, помогите, когда я делаю что-то не так
Комментарии:
1. Вы фактически удаляете объект из списка истории, но вам также необходимо удалить элемент из моментального снимка. список данных.
2. Или же вы можете назначить снимок. данные в исторический список с использованием метода setState и удаления элемента, который может сработать, приведут к тому, что список построения и отображения будет таким же.
3. это вы пытаетесь сказать
setState(() { snapshot.data.remove(index); });
, добавив эту строку после вызова метода?4. Да, что-то вроде этого…
5. но это не работает!