当数据成功写入Firestore时显示SnackBar



我正在使用这个函数-它将一个文档添加到我的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);

最新更新