Flutter社交登录按钮插件flutter_signin_button的使用
Flutter社交登录按钮插件flutter_signin_button的使用
flutter_signin_button
是一个用于iOS和Android的Flutter插件,可以生成不同社交媒体账户的登录按钮。
欢迎提供反馈和Pull Requests!
安装 Installation
在 pubspec.yaml
文件中添加依赖:
dependencies:
...
flutter_signin_button: ^2.0.0
使用示例 Usage Example
首先导入 flutter_signin_button.dart
文件:
import 'package:flutter_signin_button/flutter_signin_button.dart';
内置按钮 Built-in Buttons
SignInButton(
Buttons.Google,
onPressed: () {},
)
// 带自定义文本
SignInButton(
Buttons.Google,
text: "Sign up with Google",
onPressed: () {},
)
小型按钮 Mini Buttons
SignInButton(
Buttons.Facebook,
mini: true,
onPressed: () {},
)
自定义按钮 Self-build Buttons
SignInButtonBuilder(
text: 'Sign in with Email',
icon: Icons.email,
onPressed: () {},
backgroundColor: Colors.blueGrey[700]!,
)
内置按钮包括以下几种:
enum Buttons {
Email,
Google,
GoogleDark,
Facebook,
FacebookNew,
GitHub,
LinkedIn,
Pinterest,
Tumblr,
Twitter
}
更多详情请参阅 example 文件夹和源代码。
示例代码 Demo Code
下面是一个完整的示例代码,展示了如何使用 flutter_signin_button
插件来创建一个包含多种登录方式的应用程序界面。
import 'package:flutter/material.dart';
import 'package:flutter_signin_button/flutter_signin_button.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
/// 这是一个使用 `SignInButtonBuilder` 和 `SignInButton` 类的示例应用程序
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData.light(),
home: Scaffold(
backgroundColor: Color.fromRGBO(50, 50, 50, 1.0),
body: SignInPage(),
),
debugShowCheckedModeBanner: false,
);
}
}
class SignInPage extends StatelessWidget {
/// 显示简单的 "___ Button Pressed" 提示信息
void _showButtonPressDialog(BuildContext context, String provider) {
Scaffold.of(context).showSnackBar(SnackBar(
content: Text('$provider Button Pressed!'),
backgroundColor: Colors.black26,
duration: Duration(milliseconds: 400),
));
}
/// 通常登录按钮应该包含在 SignInPage 中
@override
Widget build(BuildContext context) {
return Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
SignInButtonBuilder(
text: 'Get going with Email',
icon: Icons.email,
onPressed: () {
_showButtonPressDialog(context, 'Email');
},
backgroundColor: Colors.blueGrey[700]!,
width: 220.0,
),
Divider(),
SignInButton(
Buttons.Google,
onPressed: () {
_showButtonPressDialog(context, 'Google');
},
),
Divider(),
SignInButton(
Buttons.GoogleDark,
onPressed: () {
_showButtonPressDialog(context, 'Google (dark)');
},
),
Divider(),
SignInButton(
Buttons.FacebookNew,
onPressed: () {
_showButtonPressDialog(context, 'FacebookNew');
},
),
Divider(),
SignInButton(
Buttons.Apple,
onPressed: () {
_showButtonPressDialog(context, 'Apple');
},
),
Divider(),
SignInButton(
Buttons.GitHub,
text: "Sign up with GitHub",
onPressed: () {
_showButtonPressDialog(context, 'Github');
},
),
Divider(),
SignInButton(
Buttons.Microsoft,
text: "Sign up with Microsoft ",
onPressed: () {
_showButtonPressDialog(context, 'Microsoft ');
},
),
Divider(),
SignInButton(
Buttons.Twitter,
text: "Use Twitter",
onPressed: () {
_showButtonPressDialog(context, 'Twitter');
},
),
Divider(),
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
SignInButton(
Buttons.LinkedIn,
mini: true,
onPressed: () {
_showButtonPressDialog(context, 'LinkedIn (mini)');
},
),
SignInButton(
Buttons.Tumblr,
mini: true,
onPressed: () {
_showButtonPressDialog(context, 'Tumblr (mini)');
},
),
SignInButton(
Buttons.Facebook,
mini: true,
onPressed: () {
_showButtonPressDialog(context, 'Facebook (mini)');
},
),
SignInButtonBuilder(
icon: Icons.email,
text: "Ignored for mini button",
mini: true,
onPressed: () {
_showButtonPressDialog(context, 'Email (mini)');
},
backgroundColor: Colors.cyan,
),
],
),
],
),
);
}
}
通过这个例子,你可以看到如何创建不同的登录按钮,并且每个按钮点击后会显示一条消息。你可以根据需要调整这些按钮的行为和样式。
更多关于Flutter社交登录按钮插件flutter_signin_button的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter社交登录按钮插件flutter_signin_button的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是如何在Flutter项目中使用flutter_signin_button
插件来创建社交登录按钮的代码示例。flutter_signin_button
插件提供了一系列预定义的社交登录按钮,包括Google、Facebook、Twitter等,使得集成这些服务变得更加简单。
首先,确保你的Flutter项目已经创建,并且你已经添加了flutter_signin_button
依赖。在你的pubspec.yaml
文件中添加以下依赖:
dependencies:
flutter:
sdk: flutter
flutter_signin_button: ^2.0.0 # 请检查最新版本号
然后,运行flutter pub get
来安装依赖。
接下来,你可以在你的Flutter项目中使用这些按钮。下面是一个简单的示例,展示如何创建一个包含Google和Facebook登录按钮的页面:
import 'package:flutter/material.dart';
import 'package:flutter_signin_button/button_list.dart';
import 'package:flutter_signin_button/flutter_signin_button.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Social Login Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: SignInPage(),
);
}
}
class SignInPage extends StatefulWidget {
@override
_SignInPageState createState() => _SignInPageState();
}
class _SignInPageState extends State<SignInPage> {
void _handleSignIn(SignInButton button) {
// 根据按钮类型执行相应的登录逻辑
if (button.buttonType == SignInButtonType.google) {
print("Google Sign In Clicked");
// 在这里添加Google登录逻辑
} else if (button.buttonType == SignInButtonType.facebook) {
print("Facebook Sign In Clicked");
// 在这里添加Facebook登录逻辑
}
// 可以添加更多的按钮类型处理逻辑
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Social Login'),
),
body: Padding(
padding: const EdgeInsets.all(16.0),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
SignInButton(
Buttons.Google,
onPressed: () => _handleSignIn(Buttons.Google),
),
SizedBox(height: 20),
SignInButton(
Buttons.Facebook,
onPressed: () => _handleSignIn(Buttons.Facebook),
),
],
),
),
);
}
}
在这个示例中,我们创建了一个简单的Flutter应用,其中包含一个Google登录按钮和一个Facebook登录按钮。当用户点击这些按钮时,会调用_handleSignIn
方法,并打印出相应的信息。在实际应用中,你需要在_handleSignIn
方法中添加具体的登录逻辑,比如调用相应的API进行身份验证。
请注意,flutter_signin_button
插件只提供了按钮的UI部分,实际的登录逻辑需要你自己实现,比如使用Firebase Authentication进行Google和Facebook的登录。