Flutter登录按钮插件dotup_flutter_signin_button的使用

Flutter登录按钮插件dotup_flutter_signin_button的使用

dotup.de

dotup.de 提供了该插件。

安装

pubspec.yaml 文件中添加依赖:

dependencies:
  ...
  dotup_flutter_signin_button: ^1.0.0

使用示例

首先导入插件:

import 'package:dotup_flutter_signin_button/dotup_flutter_signin_button.dart';
内置按钮示例

使用内置按钮并设置点击事件:

SignInButton(
  Buttons.Google,
  onPressed: () {},
)

// 带有自定义文本的按钮
SignInButton(
  Buttons.Google,
  text: "使用Google登录",
  onPressed: () {},
)
微型按钮示例

使用微型按钮并设置点击事件:

SignInButton.mini(
  Buttons.Facebook,
  onPressed: () {},
)
内置按钮枚举

内置按钮包含以下选项:

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

示例1 示例2 示例3

示例代码

以下是一个完整的示例代码,展示了如何在应用中使用 SignInButtonSignInButton.mini

import 'package:dotup_flutter_signin_button/dotup_flutter_signin_button.dart';
import 'package:flutter/material.dart';

void main() {
  SignInButton.defaultColor = Colors.white;
  SignInButton.defaultBackgroundColor = Colors.grey.shade800;
  SignInButton.useProviderColors = true;
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'dotup_flutter_signin_button',
      theme: ThemeData.light(),
      home: Scaffold(
        backgroundColor: Color.fromRGBO(50, 50, 50, 1.0),
        body: SignInPage(),
      ),
      debugShowCheckedModeBanner: false,
    );
  }
}

class SignInPage extends StatelessWidget {
  void _showButtonPressDialog(BuildContext context, String provider) {
    ScaffoldMessenger.of(context).showSnackBar(SnackBar(
      content: Text('$provider Button Pressed!'),
      backgroundColor: Colors.black26,
      duration: Duration(milliseconds: 400),
    ));
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Center(
      child: Column(
        mainAxisAlignment: MainAxisAlignment.center,
        children: [
          Padding(
            padding: const EdgeInsets.fromLTRB(16, 16, 16, 0),
            child: SignInButton(
              Buttons.Google,
              onPressed: () {},
              text: '使用Google',
              shape: StadiumBorder(),
              padding: EdgeInsets.zero,
              backgroundColor: Colors.black87,
              contentAlignment: MainAxisAlignment.center,
            ),
          ),
          Divider(),
          SignInButton.mini(
            Buttons.Google,
            onPressed: () {
              _showButtonPressDialog(context, 'Google');
            },
          ),
          Divider(),
          SignInButton(
            Buttons.Apple,
            onPressed: () {
              _showButtonPressDialog(context, 'Apple');
            },
          ),
          Divider(),
          SignInButton.mini(
            Buttons.GitHub,
            text: "使用GitHub注册",
            onPressed: () {
              _showButtonPressDialog(context, 'Github');
            },
          ),
          Divider(),
          SignInButton.mini(
            Buttons.Microsoft,
            text: "使用Microsoft注册",
            onPressed: () {
              _showButtonPressDialog(context, 'Microsoft ');
            },
          ),
          Divider(),
          SignInButton.mini(
            Buttons.Twitter,
            text: "使用Twitter",
            onPressed: () {
              _showButtonPressDialog(context, 'Twitter');
            },
          ),
          Divider(),
          Row(
            mainAxisAlignment: MainAxisAlignment.center,
            children: [
              SignInButton.mini(
                Buttons.LinkedIn,
                onPressed: () {
                  _showButtonPressDialog(context, 'LinkedIn (mini)');
                },
              ),
              SizedBox(width: 10),
              SignInButton.mini(
                Buttons.Tumblr,
                onPressed: () {
                  _showButtonPressDialog(context, 'Tumblr (mini)');
                },
              ),
              SizedBox(width: 10),
              SignInButton.mini(
                Buttons.Facebook,
                onPressed: () {
                  _showButtonPressDialog(context, 'Facebook (mini)');
                },
              ),
            ],
          ),
        ],
      ),
    );
  }
}

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

1 回复

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


当然,下面是一个关于如何使用 dotup_flutter_signin_button 插件来创建一个登录按钮的示例代码。这个插件提供了一系列预定义的登录按钮样式,可以很方便地集成到 Flutter 应用中。

首先,确保你已经在 pubspec.yaml 文件中添加了 dotup_flutter_signin_button 依赖:

dependencies:
  flutter:
    sdk: flutter
  dotup_flutter_signin_button: ^x.y.z  # 请将 x.y.z 替换为最新版本号

然后,运行 flutter pub get 命令来获取依赖。

接下来,在你的 Flutter 应用中,你可以使用以下代码来创建一个登录按钮:

import 'package:flutter/material.dart';
import 'package:dotup_flutter_signin_button/dotup_flutter_signin_button.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter SignIn Button Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: SignInButtonDemo(),
    );
  }
}

class SignInButtonDemo extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('SignIn Button Demo'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            SignInButton(
              Buttons.Google,
              onPressed: () {
                // 在这里处理 Google 登录逻辑
                print('Google Sign In Pressed');
              },
            ),
            SizedBox(height: 20),
            SignInButton(
              Buttons.Facebook,
              onPressed: () {
                // 在这里处理 Facebook 登录逻辑
                print('Facebook Sign In Pressed');
              },
            ),
            SizedBox(height: 20),
            SignInButton(
              Buttons.Apple,
              onPressed: () {
                // 在这里处理 Apple 登录逻辑
                print('Apple Sign In Pressed');
              },
            ),
          ],
        ),
      ),
    );
  }
}

在这个示例中,我们创建了一个简单的 Flutter 应用,并在首页中展示了三个登录按钮:Google、Facebook 和 Apple。当用户点击任何一个按钮时,会在控制台打印相应的信息。在实际应用中,你应该在 onPressed 回调中处理相应的登录逻辑,比如打开一个登录页面或调用相应的 API。

这个插件支持多种社交媒体和电子邮件服务的登录按钮,你可以根据需要选择使用。更多详细信息和使用方法,可以参考 dotup_flutter_signin_button 插件的官方文档。

回到顶部