我有一个用户可以登录和退出的视图,目前支持电子邮件和Google登录。使用 Google 登录工作正常,但是当用户退出并尝试再次使用 Google 登录时,没有任何反应,“登录”按钮上永远显示一个旋转图标(在尝试登录之前等待没有任何区别) .
import 'package:firebase_ui_auth/firebase_ui_auth.dart';
import 'package:flutter/material.dart';
import 'package:firebase_auth/firebase_auth.dart';
import 'package:google_sign_in/google_sign_in.dart';
final GoogleSignIn _googleSignIn = GoogleSignIn();
class AuthenticationScreen extends StatelessWidget {
const AuthenticationScreen({super.key});
Future<void> signout() async {
await _googleSignIn.disconnect();
await _googleSignIn.signOut();
await FirebaseAuth.instance.signOut();
}
@override
Widget build(BuildContext context) {
return StreamBuilder<User?>(
stream: FirebaseAuth.instance.authStateChanges(),
builder: (context, snapshot) {
if (!snapshot.hasData) {
return const SizedBox(
height: 600,
child: SignInScreen(),
);
} else {
return ElevatedButton(
onPressed: () {
signout();
},
child: const Text("Sign out"),
);
}
},
);
}
}
如果我在注销后热重新加载应用程序,则登录工作正常。在我看来,有些东西没有清理或正确断开连接,这导致注销后无法登录,但是我看到的所有示例似乎都没有在清理方面起到多大作用...
如果弹出窗口中只有一个帐户并且您第一次选择它,那么下次它将自动选择该帐户。如果有多个帐户,则只会要求选择要登录的帐户。您可以在这里查看我的演示https://github.com/Ankit-Slnk/flutter-google-auth-demo。您也可以在网络中测试它https://flutter-web-google-auth.netlify.app/#/