You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter FirebaseAuth登录异常:错误凭据仍跳转至目标页面

问题分析与解决方案

嗨,我一眼就看到你代码里的小问题啦——这是新手常踩的异步操作坑!

核心问题:忘记给异步方法加await

FirebaseAuth的signInWithEmailAndPassword是一个异步方法,它返回的是Future<UserCredential>对象,而不是直接返回用户信息。你现在直接把它赋值给user变量,这个变量永远是一个Future实例,永远不会等于null,所以你的if (user != null)判断永远为真,不管登录成功还是失败,都会执行跳转逻辑。

修正后的代码

你只需要给异步调用加上await,拿到实际的UserCredential对象,再判断里面的user是否为null就可以了:

final _auth = FirebaseAuth.instance;
// ...
onPressed: () async {
  try {
    // 加上await,等待异步操作完成,拿到真实的UserCredential
    final userCredential = await _auth.signInWithEmailAndPassword(
      email: email,
      password: password,
    );
    // 判断UserCredential里的user是否存在
    if (userCredential.user != null) {
      Navigator.push(
        context,
        MaterialPageRoute(
          builder: (context) => CoursesListScreen(),
        ),
      );
    }
  } catch (e) {
    print(e.message);
    // 这里可以加个友好提示,比如用Toast或AlertDialog告诉用户登录失败原因
  }
}

额外说明

当登录失败(比如密码错误、用户不存在)时,signInWithEmailAndPassword会抛出异常,代码会直接进入catch块,不会执行后面的跳转逻辑,刚好符合你的预期~

内容的提问来源于stack exchange,提问作者Christian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 07:59:08