Flutter:Google 登录弹出窗口不会出现以选择帐户

问题描述 投票:0回答:5

我创建了一个登录屏幕,当用户按下登录按钮时,它会调用一个事件 LoginButtonOnPressedEvent。 下面是我的 LoginBloc 类中的 onLoginButtonOnPressedEvent 函数。

 Future<void> _onLoginButtonPressedEvent(
  LoginButtonPressedEvent event, Emitter<LoginScreenState> emit) async {
  GoogleSignIn _googleSignIn = GoogleSignIn(scopes: ['email']);
  GoogleSignInAccount? user = _googleSignIn.currentUser;
  await _googleSignIn.signIn();
  emit(LoginScreenState(user: user));
  print("USER DETAILS  : ${user}");
}

我在登录屏幕中触发此事件,如下所示,其中 RippleButton 是我制作的自定义按钮。

RippleButton(
          onTap: () {
            context.read<LoginScreenBloc>().add(LoginButtonPressedEvent());
          },
        ),

当我点击按钮时,不会显示选择帐户的弹出窗口,而是屏幕变得有点暗,然后恢复正常。

下面是调用事件相关的日志

I/ContentCaptureHelper(30073): Setting logging level to OFF
I/flutter (30073): USER DETAILS  : null
I/et_schedule_ap(30073): Background concurrent copying GC freed 2871953(94MB) AllocSpace 
objects, 9(308KB) LOS objects, 87% free, 3450KB/27MB, paused 142us,42us total 104.801ms
W/et_schedule_ap(30073): Reducing the number of considered missed Gc histogram windows 
from 171 to 100

请帮忙!!!

firebase flutter async-await google-authentication bloc
5个回答
3
投票

我也遇到了这个问题,对我有用的是在尝试再次打开 Google 帐户选择弹出窗口之前注销,这意味着我的代码如下所示:

onPressed: () async {
  await _googleSignIn.signOut();
  await _googleSignIn.signIn();
},

2
投票

确保您“退出”,因为它第一次出现,但如果您还没有登录,那么之后就会出现“退出”

GoogleSignIn().signOut();

0
投票

只需使用这个:-

Future<void> _onLoginButtonPressedEvent() async {
  GoogleSignIn _googleSignIn = GoogleSignIn();
  try {
    GoogleSignInAccount? result = await _googleSignIn.signIn();

    name = result!.displayName;
    email = result.email;
    password = result.id;
     
    print(result);
  } catch (error) {
    print(error);
  }
}

0
投票

要在弹出窗口中显示谷歌登录,只需拨打

signOut()

_googleSignIn.signOut();

0
投票

我也遇到过类似的情况,请确保您正确退出。就我而言,这是因为我没有打电话

_googleSignIn.signOut();
。我按照 this 进行登录,我的注销方法如下 -

Future signOut() async {
  try {
    await _firebaseAuth.signOut();
  } catch (err) {
    log(err.toString());
  }
}

当我尝试再次登录时,没有出现弹出窗口,并且我已登录到之前选择的帐户。添加

_googleSignIn.signOut()
后,我收到了用于登录的弹出窗口。

谢谢

© www.soinside.com 2019 - 2024. All rights reserved.