期望的结果:我有一个列表视图,其中显示了待办事项列表。我喜欢实现一个删除功能,该功能将在用户单击“删除”图标按钮时触发。我还希望listview自动重新呈现,从而删除已删除的待办事项。
当前:我可以删除待办事项,但小部件无法重新显示以显示更新的列表视图(它将删除已删除的待办事项)
实施此自动重新呈现以显示更新的列表视图的最佳实践是什么?我不想导航到新页面。
谢谢
下面是我的代码
https://github.com/myhendry/flutter到我完整代码的链接
taskCard.dart
ScopedModelDescendant(
builder: (BuildContext context, Widget child, MainModel model) {
return IconButton(
icon: Icon(Icons.delete),
color: Theme.of(context).accentColor,
onPressed: () {
model.deleteTask(task.id);
// Navigator.pushNamed(context, '/updateTask/${task.id}');
});
},
),
作用域模型/connected_products.dart
Future<bool> deleteTask(String selectedTaskId) async {
_isLoading = true;
notifyListeners();
try {
await http.delete(
'https://manager1-ae03e.firebaseio.com/tasks/$selectedTaskId.json?auth=${_authenticatedUser.token}');
_isLoading = false;
notifyListeners();
return true;
} catch (e) {
_isLoading = false;
notifyListeners();
return false;
}
}
答案 0 :(得分:0)
我设法解决了这个问题。删除任务后,我只调用fetchTasks()。我不确定这是否是好习惯。如果有人有更好的方法,请随时与我分享。谢谢
下面的我的代码。希望它能帮助面临相同问题的人
ScopedModelDescendant(
builder: (BuildContext context, Widget child, MainModel model) {
return IconButton(
icon: Icon(Icons.delete),
color: Theme.of(context).accentColor,
onPressed: () {
model.deleteTask(task.id);
model.fetchTasks();
// Navigator.pushNamed(context, '/updateTask/${task.id}');
});
},
),