Использовать метод провайдера внутри метода деактивации Widget - PullRequest
0 голосов
/ 22 апреля 2020

Я очень плохо знаком с флаттером, и я столкнулся с ошибкой, которую не мог решить несколько дней, у меня есть пользовательский класс, который выглядит следующим образом

    class User with ChangeNotifier{
      FirebaseAuth _auth;
      FirebaseUser _user;
      GoogleSignIn _googleSignIn;
      Status _status = Status.Uninitialized;
    }

Этот класс имеет метод для выхода пользователя из приложения, этот метод выглядит следующим образом:

  Future signOut() async {
    _auth.signOut();
    _googleSignIn.signOut();
    _status = Status.Unauthenticated;
    notifyListeners();
    return Future.delayed(Duration.zero);
  }

Я хочу, чтобы этот метод выполнялся при выполнении перехода с одной страницы на предыдущую, поэтому я использую его внутри метода деактивации виджета:

  @override
  void deactivate() {
    Provider.of<User>(context, listen: false).signOut();
    super.deactivate();
  }

Но я получаю следующую ошибку:

E/flutter (32016): [ERROR:flutter/lib/ui/ui_dart_state.cc(157)] Unhandled Exception: A User was used after being disposed.
E/flutter (32016): Once you have called dispose() on a User, it can no longer be used.

Я был бы рад любой помощи или предложению относительно этого .. Спасибо !!

1 Ответ

1 голос
/ 22 апреля 2020

Нет необходимости использовать эти методы, если вы нажимаете на страницу регистрации, скажем, например, с экрана spla sh, вы можете дождаться запуска метода pu sh и затем безопасно выйти из него. без ошибок, конечно, учитывая, что пользователь живет выше всех этих виджетов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...