繁体   English   中英

如何在小部件构建期间在颤动中导航?

[英]How to navigate in flutter during widget build?

我试图检测该用户不再经过身份验证并将用户重定向到登录。 这就是我的做法

  Widget build(BuildContext context) {
    return FutureBuilder(
        future: _getData(context),
        builder: (context, snapshot) {
          try {
            if (snapshot.hasError && _isAuthenticationError(snapshot.error)) {
                Navigator.push(context, MaterialPageRoute(builder: (context) => LoginView()));
            }

不幸的是,在构建时进行导航不起作用。 它抛出这个错误

flutter: setState() or markNeedsBuild() called during build.
flutter: This Overlay widget cannot be marked as needing to build because the framework is already in the
flutter: process of building widgets.  A widget can be marked as needing to be built during the build 

我不能只返回LoginView小部件,因为父小部件包含应用栏和浮动按钮,并且需要在没有这些控件的情况下显示登录视图。我需要导航。

有可能做到吗?

将其包裹在Future.microtask 这将安排它在下一个异步任务周期(即build完成后)发生。

Future.microtask(() => Navigator.push(
  context, 
  MaterialPageRoute(builder: (context) => LoginView())
));

颤动中的流

通常的事情是使用发生用户更改的流程。 当用户注销时,他会检测到该更改并可以将其定向到另一个窗口。

问题在这里:

snapshot.hasError && _isAuthenticationError(snapshot.error)

而不是这个使用 OR

snapshot.hasError || _isAuthenticationError(snapshot.error)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM