【问题标题】:Flutter build function returns nullFlutter 构建函数返回 null
【发布时间】:2021-01-11 01:05:09
【问题描述】:

我正在尝试根据 authStatus 导航到我的主页或登录页面。在使用 Navigator.of(context)... 时,它会在 build 方法上返回 null 一秒钟,然后屏幕刷新并成功导航到给定页面。我对移动开发和颤振相对较新。任何线索都会有所帮助!谢谢。

代码如下:

  @override
  Widget build(BuildContext context) {
    switch (authStatus) {
      case AuthStatus.NOT_LOGGED_IN:
        WidgetsBinding.instance.addPostFrameCallback((_) {
          {
            Navigator.push(
              context,
              MaterialPageRoute(
                  builder: (context) => LoginSignUpPage(
                        auth: widget.auth,
                        onSignedIn: _onLoggedIn,
                        params: widget.params,
                      )),
            );
          }
        });

        break;
      case AuthStatus.LOGGED_IN:
        if (_userId.length > 0 && _userId != null) {
          WidgetsBinding.instance.addPostFrameCallback((_) {
            Navigator.push(
              context,
              MaterialPageRoute(
                  builder: (context) => HomePage(
                        userId: _userId,
                        auth: widget.auth,
                        onSignedOut: _onSignedOut,
                        params: widget.params,
                      )),
            );
          });
        } else
          return widget.waitingScreen;
        break;
      default:
        return widget.waitingScreen;
    }

这是错误:

构建函数返回 null。 有问题的小部件是: 根页面 构建函数绝不能返回 null。 要返回导致建筑小部件填满可用空间的空白空间,请返回 “容器()”。要返回一个占用尽可能少空间的空白空间,请返回 “容器(宽度:0.0,高度:0.0)”。

【问题讨论】:

  • switchCase 在第一种情况下实际上并没有返回任何东西,而第二种情况只有在进入 else 时才返回,您应该在其他地方执行此操作,而不是构建方法(init 或 didChangeDependencies)
  • 嘿,开关盒确实有效!我已经在 initstate 和 didChangeDependencies 方法中设置了身份验证状态,但问题在于 Navigator.push 语句。我猜在它返回视图之前,构建方法会异步执行并给出一个空错误,并且当 Navigator.push 执行时它会加载正确的视图。
  • 您会看到一秒钟的错误,因为您在其前面推送了一个新页面(它运行异步,因为您添加了 WidgetsBinding.instance.addPostFrameCallback)但您的 rootPage 构建方法永远不会返回一个小部件

标签: flutter dart flutter-web


【解决方案1】:

在 WidgetsBinding 之后的代码行,添加

return Container();

您还可以包含一个颜色参数来匹配您的设计。

【讨论】:

    猜你喜欢
    • 2020-01-22
    • 2020-10-23
    • 2021-01-14
    • 2019-07-31
    • 2020-08-08
    • 2020-12-07
    • 1970-01-01
    • 2021-06-27
    • 1970-01-01
    相关资源
    最近更新 更多