【发布时间】:2021-11-17 04:40:54
【问题描述】:
我使用 firebase 作为数据库,然后我从 firestore 获取一些数据但抛出此错误,
"对空值使用空检查运算符",
我不明白为什么。
Ps:Flutter 新手
这是我的主屏幕代码:
class _HomeState extends State<Home> {
Map<String, dynamic>? userData = {};
PanelController _panelController = PanelController();
Widget build(BuildContext context) {
getUserData().then((DocumentSnapshot documentSnapshot) async {
if (documentSnapshot.exists && documentSnapshot.data() != null) {
setState(() {
userData = {"data": documentSnapshot.data()};
});
}
});
return Scaffold(
appBar: CustomAppbar(
title: translate("APP_BAR.TITLE.HOME"),
canBack: false,
),
body: Stack(
fit: StackFit.expand,
children: <Widget>[
Text(userData!['data']!['userName']),
],
),
drawer: CustomDrawer(),
);
}
}
这里是我的 Api 服务
final _auth = FirebaseAuth.instance;
final FirebaseFirestore _fireStore = FirebaseFirestore.instance;
final userId = getData(user_uid);
getUserData() {
return _fireStore.collection('Users').doc(userId).get();
}
【问题讨论】:
-
当您想要在
Future(API 调用)完成后构建Widgets时,首选使用FutureBuilder。错误在这里userData!['data']!['userName']。更好地检查null值,而不是说该值不能为空(这就是!所做的)。 -
你想获取单个文档还是所有集合?
-
@WaliKhan 每个用户 ID 只有一个文档