首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UnHandled异常:无法捕获错误

UnHandled异常:无法捕获错误
EN

Stack Overflow用户
提问于 2021-03-05 13:13:56
回答 1查看 93关注 0票数 0

我正在尝试使用Firebase Auth与颤振。下面是我的密码。

login_screen.dart

代码语言:javascript
复制
RaisedButton(
                    shape: RoundedRectangleBorder(
                        borderRadius: BorderRadius.circular(5)),
                    color: blackShadeColor,
                    child: Text("Login",
                        style: GoogleFonts.poppins(
                            textStyle: TextStyle(
                                color: Colors.white,
                                fontWeight: FontWeight.w500,
                                fontSize: 16))),
                    onPressed: () {
                      _loginScreenController
                          .login(
                              context: context,
                              email: _emailController.text,
                              password: _passwordController.text)
                          .catchError((error) {
                        print(error);
                      });
                    },
                  ),

login_screen_controller.dart

代码语言:javascript
复制
class LoginScreenController {

  /**
   * Login Function
   */
  Future<void> login({BuildContext context, String email, String password}) async {
    
      FirebaseAuthService firebaseAuthService = FirebaseAuthService();
      firebaseAuthService.signInWithEmail(email, password).then(((value){})).catchError((onError){
        throw onError;
      });
    
  }
}

firebase_auth_service.dart

代码语言:javascript
复制
import 'package:firebase_auth/firebase_auth.dart';
import 'package:flutter/material.dart';

class FirebaseAuthService with ChangeNotifier {
  //Sign in with username and password
  Future<void> signInWithEmail(String email, String password) async {
    FirebaseAuth auth = FirebaseAuth.instance;

    try {
      UserCredential userCredential = await auth.signInWithEmailAndPassword(
          email: email, password: password);
      User user = userCredential.user;

      if (user != null) {
        print("Sign in success: " + user.email);
      } else {
        print("sign in failed");
        throw Exception(
            "Sign in Failed. Please check your email and password again");
      }
    } catch (e) {
      print(e.toString());
      throw (e);
    } finally {
      //notifyListeners();
    }
  }
}

如果有错误,如错误的密码,错误的电子邮件或其他,防火墙抛出一个错误。问题是,我试图捕捉到的错误并不像预期的那样起作用。相反,我最终得到了Unhandled exception。这就是我所犯的错误。

代码语言:javascript
复制
I/flutter (18418): [firebase_auth/invalid-email] The email address is badly formatted.
E/flutter (18418): [ERROR:flutter/lib/ui/ui_dart_state.cc(177)] Unhandled Exception: [firebase_auth/invalid-email] The email address is badly formatted.
[38;5;248mE/flutter (18418): #0      FirebaseAuthService.signInWithEmail[39;49m
 package:wnenterprises/services/firebase_auth_service.dart
E/flutter (18418): <asynchronous suspension>
[38;5;248mE/flutter (18418): #1      LoginScreenController.login[39;49m
 package:wnenterprises/controllers/login_screen_controller.dart
[38;5;248mE/flutter (18418): #2      _LoadingScreenState.build.<anonymous closure>[39;49m
 package:wnenterprises/screens/login_screen.dart
[38;5;244mE/flutter (18418): #3      _InkResponseState._handleTap[39;49m
 package:flutter/…/material/ink_well.dart
[38;5;244mE/flutter (18418): #4      _InkResponseState.build.<anonymous closure>[39;49m
 package:flutter/…/material/ink_well.dart
[38;5;244mE/flutter (18418): #5      GestureRecognizer.invokeCallback[39;49m
 package:flutter/…/gestures/recognizer.dart
[38;5;244mE/flutter (18418): #6      TapGestureRecognizer.handleTapUp[39;49m
 package:flutter/…/gestures/tap.dart
[38;5;244mE/flutter (18418): #7      BaseTapGestureRecognizer._checkUp[39;49m
 package:flutter/…/gestures/tap.dart
[38;5;244mE/flutter (18418): #8      BaseTapGestureRecognizer.acceptGesture[39;49m
 package:flutter/…/gestures/tap.dart
[38;5;244mE/flutter (18418): #9      GestureArenaManager.sweep[39;49m
 package:flutter/…/gestures/arena.dart
[38;5;244mE/flutter (18418): #10     GestureBinding.handleEvent[39;49m
 package:flutter/…/gestures/binding.dart
[38;5;244mE/flutter (18418): #11     GestureBinding.dispatchEvent[39;49m
 package:flutter/…/gestures/binding.dart
[38;5;244mE/flutter (18418): #12     RendererBinding.dispatchEvent[39;49m
 package:flutter/…/rendering/binding.dart
[38;5;244mE/flutter (18418): #13     GestureBinding._handlePointerEvent[39;49m
 package:flutter/…/gestures/binding.dart
[38;5;244mE/flutter (18418): #14     GestureBinding._flushPointerEventQueue[39;49m
 package:flutter/…/gestures/binding.dart
[38;5;244mE/flutter (18418): #15     GestureBinding._handlePointerDataPacket[39;49m
 package:flutter/…/gestures/binding.dart
[38;5;244mE/flutter (18418): #16     _rootRunUnary (dart:async/zone.dart:1206:13)[39;49m
[38;5;244mE/flutter (18418): #17     _CustomZone.runUnary (dart:async/zone.dart:1100:19)[39;49m
[38;5;244mE/flutter (18418): #18     _CustomZone.runUnaryGuarded (dart:async/zone.dart:1005:7)[39;49m
[38;5;244mE/flutter (18418): #19     _invoke1 (dart:ui/hooks.dart:265:10)[39;49m
[38;5;244mE/flutter (18418): #20     _dispatchPointerDataPacket (dart:ui/hooks.dart:174:5)[39;49m
E/flutter (18418):

这里到底发生了什么?

EN

回答 1

Stack Overflow用户

发布于 2021-03-05 13:22:07

您可以尝试常规的.then()方法并使用catch函数,而不是异步等待。:

代码语言:javascript
复制
auth.signInWithEmailAndPassword(email: email, password: password).then((val){print(val);}).catchError((e){print("Exception: " + e.toString())});
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66493240

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档