我正在从AppBrewery创建一个名为FlashChat的聊天颤振应用程序。 在欢迎屏幕中,如果用户已登录,我希望初始路由直接转到聊天路由。
_auth.currentUser() == null ? '/' : '/chat'
我使用了这个三元运算符,所以只有在有当前用户的情况下它才会进入聊天屏幕。但是,我认为它仍在尝试调用路由以转到/chat 屏幕,这就是在 null 上调用电子邮件的原因,因为此代码在我的"/chat"路由中:
final messageBubble = MessageBubble(
messageText, messageSender, messageSender == loggedInUser.email);
当三元运算符应该阻止它时,为什么它会转到/chat 路由并在空值上访问 .email?
auth.currentUser()
总是会返回一个Future<AuthResult>
,你需要用async/await
来检查AuthResult
是否为空。
void getUser() async {
Future<AuthResult> user = await FirebaseAuth.instance.currentUser();
user == null ? '/' : '/chat';
}