#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:
Возможно, вам следует преобразовать этот виджет в виджет с полным состоянием!