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.