我正在使用这个函数-它将一个文档添加到我的Firestore:
Future<void> addUser() {
// Call the user's CollectionReference to add a new user
return users
.add({
'full_name': fullName, // John Doe
'company': company, // Stokes and Sons
'age': age // 42
})
.then((value) => print("User Added"))
.catchError((error) => print("Failed to add user: $error"));
}
我想在数据已成功添加到Firestore时显示successful SnackBar()
,数据添加到Firestore失败时生成error SnackBar()
我该怎么做呢?
这是我的SnackBar:
ScaffoldMessenger.of(context).showSnackBar(successSnackBar);
可以这样使用
try {
await FirebaseFirestore.instance.collection('collectionPath').add({
'full_name': 'John Doe',
'company': 'Stokes and Sons',
'age': '42',
});
ScaffoldMessenger.of(context).showSnackBar(successSnackBar);
} catch (e) {
print(e.toString());
ScaffoldMessenger.of(context).showSnackBar(errorSnackBar);
}
或者你可以使用下面的表达式
try {
} on FirebaseException catch (e) {
}
此外,你的函数返回类型是Future void,你正在返回Firebase instant。这是不准确的。将Future<void>
型函数的return
关键字去掉,改成如下所示的asynchronies
,
Future<void> addUser() async {
await .....
}
上面的答案很好,我只是建议在显示新的小吃条之前删除以前的小吃条。
ScaffoldMessenger.of(context).hideCurrentSnackBar();
ScaffoldMessenger.of(context).removeCurrentSnackBar();
ScaffoldMessenger.of(context).clearSnackBars();
你可以从上面的方法中选择一个,这样做:
ScaffoldMessenger.of(context)
..hideCurrentSnackBar()
..showSnackBar(snackBar);