问题描述
您好,我正在尝试执行删除请求。我成功地做到了,但是它并没有刷新页面。用户必须手动刷新页面才能看到更改。我尝试使用 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);
});