Флаттер: Как обновить список после удаления списка по нажатию на кнопку

#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. но это не работает!