如何添加小吃店?

How do I add snackbar?

我不知道为什么 Snackbar 不显示 up.But 当我删除 firebaseauth 的功能时它显示了 snackbar。

代码:

MaterialButton(
              onPressed: (){
                try{
                  FirebaseAuth.instance.createUserWithEmailAndPassword(
                      email: emailController.text, password: passwordController.text).then((signedUser) {
                    userCollection.doc(signedUser.user?.uid).set({
                      'username': usernameController.text,
                      'email': emailController.text,
                      'password': passwordController.text,
                      'uid': signedUser.user?.uid,
                    });
                    Navigator.of(context).pushReplacement(MaterialPageRoute(builder: (_) => HomeScreen()));
                  });
                } catch(e) {
                  print(e.toString());
                  var snackbar = SnackBar(content: Text(e.toString()));
                  ScaffoldMessenger.of(context).showSnackBar(snackbar);
                }
              },
              elevation: 0,
              minWidth: MediaQuery.of(context).size.width,
              height: 40.h,
              child: Text("Buat akun"),
              textColor: Colors.white,
              color: Colors.blue,
            )

您正在使用 then,因此错误不会在 catch 部分被捕获。

您应该删除 try catch 块并使用 catchError() 捕获错误,而不是像这样:

FirebaseAuth.instance.createUserWithEmailAndPassword(
                      email: emailController.text, password: passwordController.text).then((signedUser) {
                    userCollection.doc(signedUser.user?.uid).set({
                      'username': usernameController.text,
                      'email': emailController.text,
                      'password': passwordController.text,
                      'uid': signedUser.user?.uid,
                    });
                    Navigator.of(context).pushReplacement(MaterialPageRoute(builder: (_) => HomeScreen()));
                  }).catchError((e) {
                    print(e.toString());
                    var snackbar = SnackBar(content: Text(e.toString()));
                    ScaffoldMessenger.of(context).showSnackBar(snackbar);
                  });