Flutter身份验证管理插件verifybloc_flutter的使用

Flutter身份验证管理插件verifybloc_flutter的使用

verifybloc_flutter

pub package pub points license

Flutter版VerifyBloc SDK。


开始使用

设置运行环境(可选)

import 'package:verifybloc_flutter/verifybloc_flutter.dart';

final VerifyblocFlutter _verifyblocFlutterPlugin = VerifyblocFlutter();
// 切换运行环境,默认为生产环境 [VerifyblocEnv.prd]
_verifyblocFlutterPlugin.setEnv(VerifyblocEnv.uat);

配置App数据(必须)

// 在启动认证之前,配置您的应用数据
_verifyblocFlutterPlugin.initialize(
  partnerId: 'partnerId', // 替换为您的合作伙伴ID
  appId: 'appId',         // 替换为您的应用ID
  privateKey: 'privateKey', // 替换为您的私钥
);

设置SDK语言(可选)

// 设置SDK的语言,例如:"en", "es-419", "hi-Deva-IN" 和 "zh-Hans-CN"
_verifyblocFlutterPlugin.setAppLocale('zh-Hans-CN');

注意
在Android上,调用setAppLocale()会改变当前应用的语言,这是因为该方法通过LocaleManager API实现的。

定制SDK界面(可选)

_verifyblocFlutterPlugin.setTheme(VerifyblocTheme(
  style: VerifyblocStyle.dark, // 设置主题样式为深色模式
  mainColor: Colors.amber,    // 设置主色调为琥珀色
  buttonStyle: VerifyblocButtonTheme(
    color: Colors.amber,       // 按钮颜色为琥珀色
    gradient: _isBtnGradient
      ? (Int32List.fromList([
          Colors.orange.value, // 按钮渐变色
          Colors.purple.value,
        ]))
      : null,
    textColor: Colors.white,   // 按钮文字颜色为白色
    borderRadius: 8,           // 按钮圆角为8像素
  ),
));
Light Dark
light theme dark theme

发起认证

_verifyblocFlutterPlugin.startVerification(
  // 当前用户在您应用中的标识符
  userId: 'userId',
  // 设置认证类型为个人或企业
  identityType: VerifyblocIdentityType.personal,
);

通过VerifyblocIdentityType设定认证类型,目前支持以下两种类型:

Value Description
personal 个人
corporate 企业

如果想了解更多关于认证类型的信息,请查阅VerifyBloc简介


了解更多


示例代码

以下是完整的示例代码,展示如何在Flutter应用中使用verifybloc_flutter插件。

main.dart

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

import 'home.dart';

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

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

  [@override](/user/override)
  Widget build(BuildContext context) {
    return const MaterialApp(
      home: HomePage(),
    );
  }
}

class HomePage extends StatefulWidget {
  [@override](/user/override)
  _HomePageState createState() => _HomePageState();
}

class _HomePageState extends State<HomePage> {
  final VerifyblocFlutter _verifyblocFlutterPlugin = VerifyblocFlutter();

  [@override](/user/override)
  void initState() {
    super.initState();

    // 初始化插件
    _verifyblocFlutterPlugin.initialize(
      partnerId: 'your_partner_id',
      appId: 'your_app_id',
      privateKey: 'your_private_key',
    );

    // 设置运行环境为测试环境
    _verifyblocFlutterPlugin.setEnv(VerifyblocEnv.uat);

    // 设置语言为中文
    _verifyblocFlutterPlugin.setAppLocale('zh-Hans-CN');

    // 设置主题为深色模式
    _verifyblocFlutterPlugin.setTheme(VerifyblocTheme(
      style: VerifyblocStyle.dark,
      mainColor: Colors.amber,
      buttonStyle: VerifyblocButtonTheme(
        color: Colors.amber,
        gradient: Int32List.fromList([
          Colors.orange.value,
          Colors.purple.value,
        ]),
        textColor: Colors.white,
        borderRadius: 8,
      ),
    ));
  }

  void startVerification() {
    // 启动认证流程
    _verifyblocFlutterPlugin.startVerification(
      userId: 'test_user_id',
      identityType: VerifyblocIdentityType.personal,
    );
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('VerifyBloc Flutter Example'),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: startVerification,
          child: const Text('Start Verification'),
        ),
      ),
    );
  }
}

更多关于Flutter身份验证管理插件verifybloc_flutter的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter身份验证管理插件verifybloc_flutter的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


verifybloc_flutter 是一个用于身份验证管理的 Flutter 插件,它基于 flutter_bloc 状态管理库,帮助开发者更容易地管理用户身份验证流程。通过使用 verifybloc_flutter,你可以轻松处理用户的登录、注册、注销等操作,并且可以与不同的身份验证服务(如 Firebase、自定义后端等)集成。

以下是如何使用 verifybloc_flutter 插件的步骤:

1. 添加依赖

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

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

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

2. 创建身份验证 Bloc

verifybloc_flutter 提供了一个 AuthBloc 类,你需要继承它并实现自己的身份验证逻辑。

import 'package:verifybloc_flutter/verifybloc_flutter.dart';

class MyAuthBloc extends AuthBloc<User> {
  MyAuthBloc() : super(null);

  [@override](/user/override)
  Future<void> login(String email, String password) async {
    // 实现登录逻辑,例如调用 API 或 Firebase 登录
    // 登录成功后,调用 emitAuthenticated(user) 来更新状态
    try {
      // 假设有一个 User 对象
      User user = await _authService.login(email, password);
      emitAuthenticated(user);
    } catch (e) {
      emitError(e.toString());
    }
  }

  [@override](/user/override)
  Future<void> register(String email, String password) async {
    // 实现注册逻辑
    try {
      User user = await _authService.register(email, password);
      emitAuthenticated(user);
    } catch (e) {
      emitError(e.toString());
    }
  }

  [@override](/user/override)
  Future<void> logout() async {
    // 实现注销逻辑
    try {
      await _authService.logout();
      emitUnauthenticated();
    } catch (e) {
      emitError(e.toString());
    }
  }
}

3. 在 UI 中使用 AuthBloc

在你的 Flutter 应用中,你可以使用 BlocProvider 来提供 MyAuthBloc,并在 UI 中监听身份验证状态的变化。

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

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

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: BlocProvider(
        create: (context) => MyAuthBloc(),
        child: HomeScreen(),
      ),
    );
  }
}

class HomeScreen extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Auth Example'),
      ),
      body: BlocBuilder<MyAuthBloc, AuthState>(
        builder: (context, state) {
          if (state is AuthAuthenticated<User>) {
            return Center(
              child: Column(
                mainAxisAlignment: MainAxisAlignment.center,
                children: [
                  Text('Welcome, ${state.user.email}!'),
                  ElevatedButton(
                    onPressed: () {
                      context.read<MyAuthBloc>().logout();
                    },
                    child: Text('Logout'),
                  ),
                ],
              ),
            );
          } else if (state is AuthUnauthenticated) {
            return Center(
              child: Column(
                mainAxisAlignment: MainAxisAlignment.center,
                children: [
                  ElevatedButton(
                    onPressed: () {
                      context.read<MyAuthBloc>().login('user@example.com', 'password');
                    },
                    child: Text('Login'),
                  ),
                  ElevatedButton(
                    onPressed: () {
                      context.read<MyAuthBloc>().register('user@example.com', 'password');
                    },
                    child: Text('Register'),
                  ),
                ],
              ),
            );
          } else if (state is AuthError) {
            return Center(
              child: Text('Error: ${state.error}'),
            );
          } else {
            return Center(
              child: CircularProgressIndicator(),
            );
          }
        },
      ),
    );
  }
}
回到顶部