从非小部件类注销

时间:2019-05-03 23:17:24

标签: flutter

我的应用向服务器发出了多个请求。有时服务器可能会要求用户重新登录,类似于以下问题: Flutter: how to force an application restart (in production mode)?

我可以做这样的事情,

      Navigator.pushAndRemoveUntil(
          context,
          MaterialPageRoute(builder: (context) => LoginPage()),
          (Route<dynamic> route) => false);

但是我需要为此提供一个BuildContext。

在非Widget类中,是否可以获取当前(最近使用)的上下文?我知道我每次进行服务器调用时都可以将上下文作为参数传递,但是我希望找到一种不太麻烦的方法来实现这一点。

1 个答案:

答案 0 :(得分:1)

寻找fit()的原因是因为您想获得m.fit(X, y, model__sample_weight=np.array([3,4,2,3]))。 (所有context调用都在幕后进行Navigator,以便在小部件树顶部附近找到一个(通常)唯一的导航器。)

如果您真正想要的只是访问导航器,则还有另一种方法。使您的应用程序具有状态,并在其状态下放置一个全局密钥。

Navigator.pushXXX

在应用程序的构建(或顶部继承的小部件的构建)中,当创建材质应用程序时,将密钥传递给它。

Navigator.of(context)

现在,从应用程序级别,您可以使用 GlobalKey<NavigatorState> navigatorKey = GlobalKey<NavigatorState>();