【发布时间】:2020-11-24 11:26:29
【问题描述】:
我有一个 StreamBuilder 监听用户登录/退出状态。
当我成功登录时,LandingScreen StreamBuilder 返回一个黑屏。但是如果我热启动它会加载正确的脚手架..只要我登录它就会打印 UID。但是当返回(测试)脚手架时,它总是黑屏。
我不明白为什么从登录到这里转换后它是黑色的,但是当我热重启它然后加载它应该如何。
编辑***我在 iPhone 12 Max Emulator 上运行它。
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(),
),
);
}
},
);
}
}
【问题讨论】:
-
也许在 StreamBuilder 构建之前登录已经完成?