Функция сборки Flutter возвращает null

Sep 25 2020

Я пытаюсь перейти на свою домашнюю страницу или страницу входа в систему на основе authStatus. При использовании Navigator.of (context) ... он возвращает 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. Виджет-нарушение: функции сборки RootPage никогда не должны возвращать null. Чтобы вернуть пустое пространство, которое заставляет строительный виджет заполнять доступное место, верните «Container ()». Чтобы вернуть пустое пространство, занимающее как можно меньше места, верните «Контейнер (ширина: 0,0, высота: 0,0)».

Ответы

2 JonnyH Sep 25 2020 at 03:01

в строке кода после WidgetsBinding добавьте

return Container();

Вы также можете включить параметр цвета, соответствующий вашему дизайну.