在我的应用程序中,验证后,用户可以移动到下一个屏幕。

              signUpWithEmail().then((user) {
                Navigator.push(context,
                    MaterialPageRoute(builder: (context) {
                  return HomePage();
                }));
              }).catchError((error) {
                print("THE ERROR : $error");
              });

现在,signUpWithEmail可能会因以下各种原因而失败:电子邮件无效、Internet连接失败等。如何检测这些错误并阻止导航?这里是signupwithemail()方法:
  Future<FirebaseUser> signUpWithEmail() async {
    String email = emailControlller.text;
    String password = passwordControlller.text;

    FirebaseUser user = await FirebaseAuth.instance
        .createUserWithEmailAndPassword(
      email: emailControlller.text,
      password: passwordControlller.text,
    )
        .then((user) {
      // set balance to 0
      Firestore.instance
          .collection("users")
          .document(user.uid)
          .setData({"cash": 0});
    }).catchError((e) => print("error : $e"));

    return user;
  }

最佳答案

无论如何,您将返回到的signUpWithEmail(),您不会抛出错误,因此它永远不会进入

.catchError((error) {
      print("THE ERROR : $error");
 })

要修复它,您必须在signUpWithEmail()上抛出错误。尝试类似的方法。
 Future<FirebaseUser> signUpWithEmail() async {
    String email = emailControlller.text;
    String password = passwordControlller.text;

    FirebaseUser user = await FirebaseAuth.instance
        .createUserWithEmailAndPassword(
      email: emailControlller.text,
      password: passwordControlller.text,
    )
        .then((user) {
      // set balance to 0
      Firestore.instance
          .collection("users")
          .document(user.uid)
          .setData({"cash": 0});
    }).catchError((e) => {
        print("error : $e")
        throw("Your error") // It return to catch
    });

    return user;
   }

如果你能做到的话告诉我。

09-11 10:13