Flutter社交登录插件flutter_social_login_widget的使用

Flutter社交登录插件flutter_social_login_widget的使用

特性

列出您的包可以实现的功能。可以包含图片、动图或视频。

开始使用

列出前置条件并提供或指向如何开始使用该包的信息。

使用

为包的用户提供简短且有用的示例。将更长的示例添加到/example文件夹中。

const like = 'sample';

额外信息

告诉用户更多关于该包的信息:在哪里可以找到更多信息,如何为该包做出贡献,如何提交问题,用户可以从包作者那里期望得到什么响应等。


示例代码

以下是使用flutter_social_login_widget的完整示例代码:

main.dart

// 导入必要的库
import 'package:flutter/material.dart';
import 'package:flutter_social_login_widget/flutter_social_login_widget.dart';
import 'package:flutter_social_login_widget/models/login_method.model.dart';

void main() {
  // 运行应用程序
  runApp(const MyApp());
}

// 定义主应用程序类
class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: const MyHomePage(title: 'Social Login Widget by justecdev'),
      debugShowCheckedModeBanner: false,
    );
  }
}

// 定义主页状态类
class MyHomePage extends StatefulWidget {
  const MyHomePage({Key? key, required this.title}) : super(key: key);
  final String title;

  @override
  State<MyHomePage> createState() => _MyHomePageState();
}

// 定义主页状态类的状态
class _MyHomePageState extends State<MyHomePage> {
  // 初始化登录方法列表
  List<LoginMethod> loginMethods = [];

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: SingleChildScrollView(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          crossAxisAlignment: CrossAxisAlignment.center,
          children: [
            // 单个登录方法示例
            const Text('单个登录方法'),
            SocialLogin(
              methods: [
                LoginMethod(
                  image: Image.asset('assets/google.png'), // 登录按钮的图标
                  onMethodTap: ((i) {}), // 点击事件回调
                ),
              ],
            ),

            // 多个登录方法示例
            const Text('多个登录方法'),
            SocialLogin(
              methods: [
                LoginMethod(
                  image: Image.asset('assets/google.png'), // Google 图标
                  onMethodTap: (i) {
                    ScaffoldMessenger.of(context).showSnackBar(
                      SnackBar(
                        content: Text("点击了第 ${i + 1} 项"), // 显示点击的索引
                        backgroundColor: Colors.purple,
                      ),
                    );
                  },
                ),
                LoginMethod(
                  image: Image.asset('assets/facebook.png'), // Facebook 图标
                  onMethodTap: (i) {
                    ScaffoldMessenger.of(context).showSnackBar(
                      SnackBar(
                        content: Text("点击了第 ${i + 1} 项"), // 显示点击的索引
                        backgroundColor: Colors.purple,
                      ),
                    );
                  },
                ),
              ],
            ),
          ],
        ),
      ),
    );
  }
}

资源文件目录结构示例

确保在assets文件夹中包含以下图片文件:

  • google.png
  • facebook.png

pubspec.yaml中配置资源文件路径:

flutter:
  assets:
    - assets/google.png
    - assets/facebook.png

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

1 回复

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


flutter_social_login_widget 是一个用于在 Flutter 应用中实现社交登录的插件。它支持多种社交登录方式,如 Google、Facebook、Apple 等。以下是如何使用 flutter_social_login_widget 插件的步骤:

1. 添加依赖

首先,在 pubspec.yaml 文件中添加 flutter_social_login_widget 插件的依赖:

dependencies:
  flutter:
    sdk: flutter
  flutter_social_login_widget: ^1.0.0  # 请使用最新版本

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

2. 配置社交登录平台

在使用社交登录之前,你需要在各个社交平台(如 Google、Facebook、Apple)上创建应用并获取相应的配置信息。

Google 登录

  • Google Cloud Console 中创建一个项目。
  • 启用 Google Sign-In API。
  • 创建 OAuth 2.0 客户端 ID,并配置 androidiosSHA-1 指纹。

Facebook 登录

  • Facebook for Developers 中创建一个应用。
  • 获取 App IDApp Secret
  • 配置 OAuth 重定向 URL。

Apple 登录

  • Apple Developer 中配置 Sign In with Apple
  • 获取 Service IDKey ID

3. 初始化插件

main.dart 文件中初始化 flutter_social_login_widget 插件:

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

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  
  // 初始化社交登录插件
  await FlutterSocialLoginWidget.initialize(
    googleClientId: 'YOUR_GOOGLE_CLIENT_ID',
    facebookAppId: 'YOUR_FACEBOOK_APP_ID',
    appleServiceId: 'YOUR_APPLE_SERVICE_ID',
  );

  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Social Login',
      home: SocialLoginScreen(),
    );
  }
}

4. 使用社交登录按钮

SocialLoginScreen 中使用 SocialLoginButton 来显示社交登录按钮:

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

class SocialLoginScreen extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Social Login'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            SocialLoginButton(
              type: SocialLoginType.google,
              onPressed: () async {
                try {
                  final user = await FlutterSocialLoginWidget.signInWithGoogle();
                  print('Google User: ${user.displayName}');
                } catch (e) {
                  print('Google Login Error: $e');
                }
              },
            ),
            SizedBox(height: 20),
            SocialLoginButton(
              type: SocialLoginType.facebook,
              onPressed: () async {
                try {
                  final user = await FlutterSocialLoginWidget.signInWithFacebook();
                  print('Facebook User: ${user.displayName}');
                } catch (e) {
                  print('Facebook Login Error: $e');
                }
              },
            ),
            SizedBox(height: 20),
            SocialLoginButton(
              type: SocialLoginType.apple,
              onPressed: () async {
                try {
                  final user = await FlutterSocialLoginWidget.signInWithApple();
                  print('Apple User: ${user.displayName}');
                } catch (e) {
                  print('Apple Login Error: $e');
                }
              },
            ),
          ],
        ),
      ),
    );
  }
}

5. 处理登录结果

onPressed 回调中处理登录结果。FlutterSocialLoginWidget.signInWithGoogle()FlutterSocialLoginWidget.signInWithFacebook()FlutterSocialLoginWidget.signInWithApple() 方法会返回一个 User 对象,包含用户的基本信息。

6. 处理错误

try-catch 块中捕获并处理可能出现的错误。

7. 注销

如果需要注销用户,可以调用 FlutterSocialLoginWidget.signOut() 方法:

await FlutterSocialLoginWidget.signOut();
回到顶部