立即删除并重新渲染小部件

时间:2018-10-04 03:29:52

标签: flutter

期望的结果:我有一个列表视图,其中显示了待办事项列表。我喜欢实现一个删除功能,该功能将在用户单击“删除”图标按钮时触发。我还希望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;
    }
  }

1 个答案:

答案 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}');
              });
        },
      ),