Flutter 在Widget'中使用provider方法;s去激活方法

Flutter 在Widget'中使用provider方法;s去激活方法,flutter,Flutter,我是个新手,我遇到了一个好几天都无法解决的错误,我有一个用户类,看起来像这样 class User with ChangeNotifier{ FirebaseAuth _auth; FirebaseUser _user; GoogleSignIn _googleSignIn; Status _status = Status.Uninitialized; } 此类有一个将用户从应用程序注销的方法,该方法如下所示: Future

我是个新手,我遇到了一个好几天都无法解决的错误,我有一个用户类,看起来像这样

    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);
  }
我希望在执行从一个页面到上一个页面的向上导航时执行此方法,因此我在小部件的deactivate方法中使用它:

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

我将非常感谢任何有关这方面的帮助或建议。。谢谢

无需使用这些方法,如果您从(例如)启动屏幕推送注册页面,那么您可以等待推送方法执行,然后您可以安全无误地将其注销,当然前提是用户生活在所有这些小部件之上。

您在void dispose()中尝试过吗?@FloW yes,但我仍然无法执行SignOut方法。我得到以下错误:引发了另一个异常:查找停用小部件的祖先是不安全的。为了澄清问题,您想在弹出某个路由时注销用户吗?@LoVe Yes在我的用户类中我有一个保存FirebaseUser实例的变量,在我的注册页面中,我有一个表格来填写与该firebaseuser相关的所有信息,因此当我弹出注册页面时,我想签出该firebaseuser,因为他不会完成注册,那么无需使用这些方法,如果您正在推送注册页面,例如,启动屏幕,然后你可以等待push方法被执行,然后你可以安全无误地让他退出,当然,考虑到用户生活在所有这些小部件之上,告诉我你发布答案是否有效
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.