How can I resolve "LateInitializationError: Field 'userMap' has not been initialized."
How can I resolve "LateInitializationError: Field 'userMap' has not been initialized."
late Map<String,dynamic> userMap;
bool isLoading = false;
final TextEditingController _search = TextEditingController();
void onSearch() async{
FirebaseFirestore _firestore = FirebaseFirestore.instance;
setState(() {
isLoading = true;
});
await _firestore.collection('users').where('email', isEqualTo: _search.text)
.get().then((value) {
setState(() {
userMap = value.docs[0].data();
isLoading = false;
});
print(userMap);
});
}
代码的第一部分工作正常,但是当我想创建我的 ListTile 时弹出错误。
userMap != null ?
ListTile(
title: Text(userMap['name']),
subtitle: Text(userMap['email']),
):Container(),
如果有人能帮助我,那将是非常感谢!
当你有一个不可为空的变量时可以使用late
关键字,但你只想稍后初始化它。变量永远不会为空,只有两种状态,未初始化或使用非空值初始化。
如果您想使用可为空的变量,您只能将 ?
关键字添加到变量中,例如 Map<String,dynamic>? userMap;
late Map<String,dynamic> userMap;
bool isLoading = false;
final TextEditingController _search = TextEditingController();
void onSearch() async{
FirebaseFirestore _firestore = FirebaseFirestore.instance;
setState(() {
isLoading = true;
});
await _firestore.collection('users').where('email', isEqualTo: _search.text)
.get().then((value) {
setState(() {
userMap = value.docs[0].data();
isLoading = false;
});
print(userMap);
});
}
代码的第一部分工作正常,但是当我想创建我的 ListTile 时弹出错误。
userMap != null ?
ListTile(
title: Text(userMap['name']),
subtitle: Text(userMap['email']),
):Container(),
如果有人能帮助我,那将是非常感谢!
当你有一个不可为空的变量时可以使用late
关键字,但你只想稍后初始化它。变量永远不会为空,只有两种状态,未初始化或使用非空值初始化。
如果您想使用可为空的变量,您只能将 ?
关键字添加到变量中,例如 Map<String,dynamic>? userMap;