Flutter安卓及iOS海外登录--Google登录最详细流程
import 'package:flutter/material.dart';
import 'package:google_sign_in/google_sign_in.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Google Sign In',
home: GoogleSignInButton(),
);
}
}
class GoogleSignInButton extends StatefulWidget {
@override
_GoogleSignInButtonState createState() => _GoogleSignInButtonState();
}
class _GoogleSignInButtonState extends State<GoogleSignInButton> {
GoogleSignIn _googleSignIn = GoogleSignIn(scopes: ['email']);
bool isLoggedIn = false;
GoogleSignInAccount _account;
// 点击按钮后的处理函数
void _handleSignIn() async {
try {
// 尝试登录
final GoogleSignInAccount account = await _googleSignIn.signIn();
setState(() {
this._account = account;
isLoggedIn = true;
});
} catch (error) {
print('Error signing in: $error');
}
}
// 点击注销按钮后的处理函数
void _handleSignOut() {
_googleSignIn.signOut();
setState(() {
isLoggedIn = false;
_account = null;
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Google Sign In Demo'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
// 如果已登录,显示用户信息和注销按钮
if (isLoggedIn) ...[
Text('Signed in as ${_account.displayName}'),
Text('Email: ${_account.email}'),
TextButton(
child: Text('SIGN OUT'),
onPressed: _handleSignOut,
),
] else ...[
// 显示登录按钮
TextButton(
child: Text('SIGN IN WITH GOOGLE'),
onPressed: _handleSignIn,
),
],
],
),
),
);
}
}
这段代码首先导入了必要的Flutter和google\_sign\_in插件。在main
函数中,我们初始化了一个Flutter应用,并设置了一个MyApp
作为根Widget。MyApp
中创建了一个GoogleSignInButton
的实例作为主页面。GoogleSignInButton
是一个有状态的Widget,它维护了Google登录的状态,包括是否已登录以及用户信息。点击登录按钮时,会调用_handleSignIn
方法尝试登录,登录成功后更新状态。点击注销按钮时,会调用_handleSignOut
方法注销用户,并更新状态。这个例子展示了如何在Flutter应用中实现Google登录功能。
评论已关闭