我前不久发布了这个问题,我给出了一些非常好的答案,但是我现在遇到了这个错误 [VERBOSE-2:ui_dart_state.cc(177)]未处理的异常:NoSuchMethodError:在null上调用了setter'receiverId ='。 接收者:null 尝试调用:receiverId =“ null-Rxe7459XVwM4chzI6AP5XkixTql1”
readLocal() async {
FirebaseUser user = await _authMethods.getCurrentUser();
senderId = user.uid ?? '';
if ( senderId.hashCode <= receiverId.hashCode) {
message.senderId = '$senderId-$receiverId';
} else {
message.receiverId = '$receiverId-$senderId';
}
Firestore.instance.collection(USERS_COLLECTION).document(senderId).updateData({'chattingWith': receiverId});
setState(() {});
}
这是我的未来
Future<FirebaseUser> getCurrentUser() async {
FirebaseUser currentUser;
currentUser = await _auth.currentUser();
return currentUser;
}
请帮助我,我真的很陌生,正在尝试完成我的第一个申请。
答案 0 :(得分:2)
这里似乎有多个错误。
您正在尝试将Future函数归因于senderId变量,但是Future是异步的,因此您要等待该值。
但这仅会导致另一个错误,因为getCurrentUser将返回FirebaseUser,并且您需要用户ID字符串。因此,您可能需要这样做:
FirebaseUser user = await _authMethods.getCurrentUser();
senderId = user.uid ?? '';
答案 1 :(得分:1)
您在代码中遇到的相同问题,让我们一个接一个地修复主题:
getCurrentUser
是async
函数,因此您必须await _authMethods.getCurrentUser()
getCurrentUser
将返回FirebaseUser
,这意味着这是一个object
,但是通过写_authMethods.getCurrentUser() ?? ''
来表示如果_authMethods.getCurrentUser()
的结果不为空,则分配该值值分配给senderId
,否则分配''
,即String
,因此无法将String
分配给senderId
,而可以分配null
。 / li>