Флаттер: конструктор StreamBuilder возвращает черный экран

#flutter #dart

#флаттер #дротик

Вопрос:

У меня есть StreamBuilder, прослушивающий статус входа / выхода пользователя.

Когда я успешно вхожу в систему, LandingScreen StreamBuilder возвращает черный экран. Но если я перезапущу его, он загрузит правильный каркас..Пока я вхожу в систему, он печатает UID. Но когда дело доходит до возврата (тестового) каркаса, это всегда черный экран.

Я не понимаю, почему после перехода от входа в систему к here он черный, но когда я перезагружаю его, он загружается, как и должен.

РЕДАКТИРОВАТЬ *** Я запускаю это на эмуляторе iPhone 12 Max.

     class LandingScreen extends StatelessWidget {
  @override
  Widget build(BuildContext context) {

    final auth = Provider.of<AuthBase>(context, listen: false);

    return StreamBuilder<CurrentUser>(
      stream: auth.onAuthStateChanged,
      builder: (context, dataSnapShot) {
        print(dataSnapShot.connectionState);
        if (dataSnapShot.connectionState == ConnectionState.active) {
          CurrentUser user = dataSnapShot.data;
          if (user == null) return LoginScreen();
          print(user.uid);
          return SafeArea(
            child: Scaffold(
              body: Column(
                children: [
                  Center(
                    child: FlatButton(
                      onPressed: () {
                        auth.signOut();
                      },
                      child: Text('SIGN OUT HERE'),
                    ),
                  ),
                ],
              ),
            ),
          );
          // return DashboardScreen();
        } else {
          return Scaffold(
            appBar: AppBar(
              title: Text('data'),
            ),
            body: Center(
              child: CircularProgressIndicator(),
            ),
          );
        }
      },
    );
  }
}
 

Комментарии:

1. Возможно, вход в систему завершается до создания StreamBuilder?

Ответ №1:

Возможно, вам следует преобразовать этот виджет в виджет с полным состоянием!