如何将 firebase 错误消息从终端显示到 UI?

Posted

技术标签:

【中文标题】如何将 firebase 错误消息从终端显示到 UI?【英文标题】:How can i display the firebase error message from terminal to UI? 【发布时间】:2021-02-13 15:16:26 【问题描述】:

我一直试图在安全区域内的列中显示此警报消息。我必须将此消息显示为错误消息,其中最初的 errormessage 是具有空值的字符串。错误信息在终端成功出现,但没有进入屏幕。

 try 

SharedPreferences 首选项 = 等待 SharedPreferences.getInstance();

  FirebaseAuth _auth = FirebaseAuth.instance;
  _auth
      .signInWithEmailAndPassword(
          email: username + '@mail.com', password: password)
      .then((log) 

    var key = prefs.setString('key', username);
    Navigator.pushAndRemoveUntil(
        context,
        MaterialPageRoute(builder: (BuildContext context) => Mails()),
        (Route<dynamic> route) => false);
  );
 catch (e) 
  showDialog(context: context, builder: (context) => Dialog(child: Text(e.toString()),));
  
  print('This is what we got $e.message');

这是我的调试控制台

E/flutter ( 3195): [ERROR:flutter/lib/ui/ui_dart_state.cc(157)] 
Unhandled Exception: PlatformException(ERROR_USER_NOT_FOUND, There 
is no user record corresponding to this identifier. The user may 
have been deleted., null)
[38;5;244mE/flutter ( 3195): #0      
StandardMethodCodec.decodeEnvelope[39;49m
[38;5;244mE/flutter ( 3195): #1      
MethodChannel.invokeMethod[39;49m
E/flutter ( 3195): <asynchronous suspension>
[38;5;244mE/flutter ( 3195): #2       
MethodChannel.invokeMapMethod[39;49m
[38;5;248mE/flutter ( 3195): #3      
FirebaseAuth.signInWithCredential[39;49m
[38;5;248mE/flutter ( 3195): #4      
FirebaseAuth.signInWithEmailAndPassword[39;49m
[38;5;248mE/flutter ( 3195): #5      _LoginState.loginuser[39;49m
[38;5;244mE/flutter ( 3195): #6      _asyncThenWrapperHelper. 

(dart:async- 补丁/async_patch.dart:73:64)[39;49m [38;5;244mE/flutter (3195):#7 _rootRunUnary (dart:async/zone.dart:1134:38)[39;49m [38;5;244mE/flutter (3195):#8 _CustomZone.runUnary (dart:async/zone.dart:1031:19)[39;49m [38;5;244mE/flutter (3195):#9 _FutureListener.handleValue (dart:async/future_impl.dart:139:18)[39;49m [38;5;244mE/flutter (3195):#10 Future._propagateToListeners.handleValueCallback (dart:async/future_impl.dart:680:45)[39;49m [38;5;244mE/flutter (3195): #11 Future._propagateToListeners (dart:async/future_impl.dart:709:32)[39;49m [38;5;244mE/颤振(3195):#12 Future._addListener。 (dart:async/future_impl.dart:389:9)[39;49m [38;5;244mE/flutter (3195):#13 _rootRun (dart:async/zone.dart:1126:13)[39;49m [38;5;244mE/flutter (3195):#14 _CustomZone.run (dart:async/zone.dart:1023:19)[39;49m [38;5;244mE/flutter (3195): #15 _CustomZone.runGuarded (dart:async/zone.dart:925:7)[39;49m [38;5;244mE/颤振(3195):#16 _CustomZone.bindCallbackGuarded。 (dart:async/zone.dart:965:23)[39;49m [38;5;244mE/flutter (3195):#17 _microtaskLoop (dart:async/schedule_microtask.dart:43:21)[39;49m [38;5;244mE/flutter (3195):#18 _startMicrotaskLoop (dart:async/schedule_microtask.dart:52:5)[39;49m E/颤动​​(3195):

【问题讨论】:

【参考方案1】:

这样做

catch(e)
  showDialog(
    context: context,
    builder: (context) => Dialog(child: Container(..<What you want to show>...)); );

你不需要 setState

【讨论】:

我试过了,但根本没用。错误出现在终端中,但不会作为对话框反映在 UI 中。不过感谢您的宝贵时间 你能显示错误吗?你也试过e.toString() 是的,我试过 .toString() 但没有用。我什至试图在 catch 块中打印一条甚至没有打印的虚拟消息。我不知道发生了什么。这是代码和调试控制台。 我已经在上面发布了代码和调试控制台。请看一看。它甚至不打印打印语句。甚至错误都在抛出。 当用户更新他们的电子邮件、密码或重置他们的密码时。 Firebase 身份验证后端会撤销他们的令牌,要求他们重新进行身份验证或尝试再次登录。这是一项安全功能。例如,如果他们的帐户被盗用,用户可以重置他们的密码。所有其他会话必须重新验证。这是因为与您登录/登录的电子邮件不存在,您必须使用 auth.createUserWithEmailAndPassword 注册该电子邮件,然后登录/注册或更正您的电子邮件和密码。

以上是关于如何将 firebase 错误消息从终端显示到 UI?的主要内容,如果未能解决你的问题,请参考以下文章

Firebase 函数上传到存储

使用 Flutter,如何在单独的登录页面小部件中显示在 AuthService 类中捕获的 Firebase Auth 错误消息?

如何将图像从 Firebase 存储显示到小部件中?

将自定义数据从 Firebase 云消息传递控制台显示到 Flutter 应用程序?

TypeError: u.indexOf 不是 Reactjs 和 Firebase 的函数

无法使用 Android 将数据写入 Firebase 数据库时如何获取错误消息