Немедленно удалить и изменить виджет - PullRequest
0 голосов
/ 04 октября 2018

Желаемый результат: у меня есть просмотр списка, который отображает список задач.Мне нравится реализовывать функцию удаления, которая будет срабатывать, когда пользователь нажимает кнопку «Удалить».Мне также нравится, что представление списка автоматически перерисовывается, что удаляет удаленную задачу.

НАСТОЯЩЕЕ: Я могу удалить задачу, но виджет не перерисовывается, чтобы отобразить обновленное представление списка (которое удалит удаленную задачу)

Как лучше всего использовать эту автоматическую визуализацию для отображения обновленного списка?Я не хочу переходить на новую страницу.

Спасибо

Ниже приведены мои коды

Ссылка 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}');
              });
        },
      ),

scoped-models / 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 голосов
/ 04 октября 2018

Мне удалось решить проблему.Я просто вызываю 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}');
              });
        },
      ),
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...