如何从列表视图中删除某些内容并重新加载页面?颤振网络

问题描述

您好,我正在尝试执行删除请求。我成功地做到了,但是它并没有刷新页面用户必须手动刷新页面才能看到更改。我尝试使用 setState((){}) 但没有用。

class TodoList extends StatefulWidget {
  final List<dynamic> todos;
  final TodoService todoService;
  TodoList({Key key,this.todos,this.todoService}) : super(key: key);

  @override
  _TodoListState createState() => _TodoListState();
}

class _TodoListState extends State<TodoList> {
  @override
  Widget build(BuildContext context) {
    return ListView.builder(
      itemCount: widget.todos.length,itemBuilder: (context,index) {
        return Column(
          children: <Widget>[
            Card(
              child: ListTile(
                title: Text(widget.todos[index].description),trailing: Wrap(
                  children: <Widget>[
                    IconButton(
                      icon: Icon(Icons.edit),onpressed: () {},color: Colors.blue,),SizedBox(width: 20),IconButton(
                      icon: Icon(Icons.delete),onpressed: () {
                        setState(() {
                          widget.todoService
                              .deletetodo(id: widget.todos[index].id);
                        });
                      },color: Colors.red,],);
      },);
  }
}

解决方法

您还必须在小部件列表中删除:

    onPressed: () {
                            setState(() {
                              widget.todoService
                                  .deleteTodo(id: widget.todos[index].id);
                              widget.todos.removeWhere((item) => item.id == widget.todos[index].id);


                            });

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...