Flutter社交登录按钮插件flutter_signin_button2的使用

Flutter社交登录按钮插件flutter_signin_button2的使用

安装

pubspec.yaml文件中添加依赖:

dependencies:
  ...
  flutter_signin_button2: ^1.0.0

使用示例

首先,在项目中导入flutter_signin_button2包:

import 'package:flutter_signin_button2/flutter_signin_button.dart';
内置按钮

使用内置按钮,例如Google登录按钮:

SignInButton(
  Buttons.Google,
  onPressed: () {
    // 处理点击事件
  },
)

你也可以自定义按钮上的文本:

SignInButton(
  Buttons.Google,
  text: "使用Google注册",
  onPressed: () {
    // 处理点击事件
  },
)
迷你按钮

对于迷你按钮,例如Facebook迷你按钮:

SignInButton(
  Buttons.Facebook,
  mini: true,
  onPressed: () {
    // 处理点击事件
  },
)
自定义按钮

使用SignInButtonBuilder创建自定义按钮:

SignInButtonBuilder(
  text: '使用电子邮件注册',
  icon: Icons.email,
  onPressed: () {
    // 处理点击事件
  },
  backgroundColor: Colors.blueGrey.shade700,
)

内置按钮枚举值

内置按钮包含以下枚举值:

enum Buttons {
  Apple,
  AppleDark,
  Email,
  Google,
  GoogleDark,
  Facebook,
  FacebookNew,
  GitHub,
  LinkedIn,
  Pinterest,
  Tumblr,
  Twitter
}

示例代码

以下是完整的示例代码:

import 'package:flutter/material.dart';
import 'package:flutter_signin_button2/flutter_signin_button.dart';

void main() => runApp(const MyApp());

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  /// 这是一个使用 `SignInButtonBuilder` 和 `SignInButton` 类的示例应用
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData.light(),
      home: const Scaffold(
        backgroundColor: Color.fromRGBO(50, 50, 50, 1.0),
        body: SignInPage(),
      ),
      debugShowCheckedModeBanner: false,
    );
  }
}

class SignInPage extends StatelessWidget {
  const SignInPage({super.key});

  /// 显示一个简单的 "___ 按钮已按下" 提示
  void _showButtonPressDialog(BuildContext context, String provider) {
    ScaffoldMessenger.of(context).showSnackBar(SnackBar(
      content: Text('$provider 按钮已按下!'),
      backgroundColor: Colors.black26,
      duration: const Duration(milliseconds: 400),
    ));
  }

  /// 登录按钮通常应该包含在 SignInPage 中
  [@override](/user/override)
  Widget build(BuildContext context) {
    return Center(
      child: Column(
        mainAxisAlignment: MainAxisAlignment.center,
        children: [
          SignInButtonBuilder(
            text: '开始使用电子邮件',
            icon: Icons.email,
            onPressed: () {
              _showButtonPressDialog(context, 'Email');
            },
            backgroundColor: Colors.blueGrey[700]!,
            width: 220.0,
          ),
          const Divider(),
          SignInButton(
            Buttons.Google,
            onPressed: () {
              _showButtonPressDialog(context, 'Google');
            },
          ),
          const Divider(),
          SignInButton(
            Buttons.GoogleDark,
            onPressed: () {
              _showButtonPressDialog(context, 'Google (暗色)');
            },
          ),
          const Divider(),
          SignInButton(
            Buttons.FacebookNew,
            onPressed: () {
              _showButtonPressDialog(context, 'FacebookNew');
            },
          ),
          const Divider(),
          SignInButton(
            Buttons.Apple,
            onPressed: () {
              _showButtonPressDialog(context, 'Apple');
            },
          ),
          const Divider(),
          SignInButton(
            Buttons.GitHub,
            text: '使用GitHub注册',
            onPressed: () {
              _showButtonPressDialog(context, 'GitHub');
            },
          ),
          const Divider(),
          SignInButton(
            Buttons.Microsoft,
            text: '使用Microsoft注册',
            onPressed: () {
              _showButtonPressDialog(context, 'Microsoft');
            },
          ),
          const Divider(),
          SignInButton(
            Buttons.Twitter,
            text: '使用Twitter',
            onPressed: () {
              _showButtonPressDialog(context, 'Twitter');
            },
          ),
          const Divider(),
          Row(
            mainAxisAlignment: MainAxisAlignment.center,
            children: [
              SignInButton(
                Buttons.LinkedIn,
                mini: true,
                onPressed: () {
                  _showButtonPressDialog(context, 'LinkedIn (迷你)');
                },
              ),
              SignInButton(
                Buttons.Tumblr,
                mini: true,
                onPressed: () {
                  _showButtonPressDialog(context, 'Tumblr (迷你)');
                },
              ),
              SignInButton(
                Buttons.Facebook,
                mini: true,
                onPressed: () {
                  _showButtonPressDialog(context, 'Facebook (迷你)');
                },
              ),
              SignInButtonBuilder(
                icon: Icons.email,
                text: '忽略迷你按钮的文本',
                mini: true,
                onPressed: () {
                  _showButtonPressDialog(context, 'Email (迷你)');
                },
                backgroundColor: Colors.cyan,
              ),
            ],
          ),
        ],
      ),
    );
  }
}

更多关于Flutter社交登录按钮插件flutter_signin_button2的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter社交登录按钮插件flutter_signin_button2的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


flutter_signin_button2 是一个用于在 Flutter 应用中添加社交登录按钮的插件。它支持多种社交登录平台,如 Google、Facebook、Apple、Twitter 等。这个插件是 flutter_signin_button 的升级版本,提供了更多的自定义选项和更好的兼容性。

安装

首先,你需要在 pubspec.yaml 文件中添加 flutter_signin_button2 依赖:

dependencies:
  flutter:
    sdk: flutter
  flutter_signin_button2: ^2.0.0

然后运行 flutter pub get 来安装依赖。

基本用法

  1. 导入包

    在需要使用社交登录按钮的 Dart 文件中导入 flutter_signin_button2 包:

    import 'package:flutter_signin_button2/flutter_signin_button2.dart';
    
  2. 使用社交登录按钮

    你可以在你的 UI 中使用 SignInButton 小部件来添加社交登录按钮。以下是一个简单的示例:

    import 'package:flutter/material.dart';
    import 'package:flutter_signin_button2/flutter_signin_button2.dart';
    
    class LoginScreen extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          appBar: AppBar(
            title: Text('Login'),
          ),
          body: Center(
            child: Column(
              mainAxisAlignment: MainAxisAlignment.center,
              children: <Widget>[
                SignInButton(
                  Buttons.Google,
                  text: "Sign in with Google",
                  onPressed: () {
                    // 处理 Google 登录逻辑
                  },
                ),
                SignInButton(
                  Buttons.Facebook,
                  text: "Sign in with Facebook",
                  onPressed: () {
                    // 处理 Facebook 登录逻辑
                  },
                ),
                SignInButton(
                  Buttons.Apple,
                  text: "Sign in with Apple",
                  onPressed: () {
                    // 处理 Apple 登录逻辑
                  },
                ),
                SignInButton(
                  Buttons.Twitter,
                  text: "Sign in with Twitter",
                  onPressed: () {
                    // 处理 Twitter 登录逻辑
                  },
                ),
              ],
            ),
          ),
        );
      }
    }
    

自定义按钮

SignInButton 小部件提供了多种自定义选项,例如:

  • 按钮样式:你可以通过 Buttons 枚举选择不同的按钮样式。
  • 按钮大小:你可以通过 mini 参数来设置按钮是否为迷你样式。
  • 按钮文本:你可以通过 text 参数来设置按钮的文本。
  • 按钮颜色:你可以通过 buttonColor 参数来自定义按钮的背景颜色。
  • 文本颜色:你可以通过 textColor 参数来自定义按钮的文本颜色。

示例:自定义按钮样式

SignInButton(
  Buttons.Google,
  text: "Sign in with Google",
  buttonColor: Colors.blue,
  textColor: Colors.white,
  onPressed: () {
    // 处理 Google 登录逻辑
  },
)
回到顶部