Flutter插件minds_digital的使用方法

Flutter插件minds_digital的使用方法

Visão Geral

概述

Minds Digital的Flutter SDK旨在为您的Flutter应用程序提供快速、简化且抽象化的语音生物识别旅程集成。

我们的软件包提供了一个API包装器,其中包含已抽象化的功能,使您可以专注于应用逻辑,而不是担心音频处理和捕获、与我们云端API的集成以及相关流程屏幕的开发。

Sobre a SDK

关于SDK

Minds Digital的Flutter SDK设计用于提供快速、简化且抽象化的语音生物识别集成。它通过封装API功能来简化开发者的工作,让他们能够集中精力在应用逻辑上,而无需关注复杂的音频处理、云端API集成以及相关流程屏幕的开发。

Documentação

文档

有关所有功能和可能性的详细信息,请参阅官方文档:官方文档

示例代码

以下是一个完整的示例代码,展示了如何使用minds_digital插件:

import 'package:flutter/material.dart';
import 'package:minds_digital/minds_digital.dart';
import 'app_widget.dart';

Future<void> main() async {
  WidgetsFlutterBinding.ensureInitialized();
  MindsApiWrapper.initialize(
    environment: Environment.sandbox,
    token: 'token',
  );
  runApp(const AppWidget());
}

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

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text(
          'Sample package',
          style: TextStyle(color: Colors.white),
        ),
      ),
      body: Center(
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.center,
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            ElevatedButton(
              onPressed: () async {
                // 示例:注册流程
                final response = await MindsApiWrapper.service.enrollment(
                  request: const BiometricsRequest(
                    audio: "SW4gY29tcHV0ZXIgcHJvZ3JhbW1pbmcsIEJhc2U2NCB",
                    cpf: '00000000000',
                    externalId: '123',
                    externalCustomerId: '123',
                    extension: 'ogg',
                    phoneNumber: '21981564763',
                    showDetails: true,
                  ),
                );
                debugPrint(response.rawResponse.toString());
              },
              child: const Text('注册'),
            ),
            const SizedBox(height: 10),
            ElevatedButton(
              onPressed: () async {
                // 示例:认证流程
                final response = await MindsApiWrapper.service.authentication(
                  request: const BiometricsRequest(
                    audio: "SW4gY29tcHV0ZXIgcHJvZ3JhbW1pbmcsIEJhc2U2NCB",
                    cpf: '00000000000',
                    externalId: '123',
                    externalCustomerId: '123',
                    extension: 'ogg',
                    phoneNumber: '21981564763',
                    showDetails: true,
                  ),
                );
                debugPrint(response.rawResponse.toString());
              },
              child: const Text('认证'),
            ),
            const SizedBox(height: 10),
            ElevatedButton(
              onPressed: () async {
                // 示例:将电话添加到黑名单
                final response = await MindsApiWrapper.service.setPhoneBlocklist(
                  request: const RequestPhoneBlocklist(
                    phoneNumber: '11111111111',
                    externalId: '123',
                    description: '发现此号码存在欺诈行为',
                    createdBy: 'Vitor',
                  ),
                );
                debugPrint(response.toString());
              },
              child: const Text("添加电话到黑名单"),
            ),
            const SizedBox(height: 10),
            ElevatedButton(
              onPressed: () async {
                // 示例:将声音添加到黑名单
                final response = await MindsApiWrapper.service.setVoiceBlocklist(
                  request: const RequestVoiceBlocklist(
                    audio: "SW4gY29tcHV0ZXIgcHJvZ3JhbW1pbmcsIEJhc2U2NCB...",
                    externalId: '123',
                    description: '发现此声音存在欺诈行为',
                    createdBy: 'Vitor',
                    extension: 'ogg',
                  ),
                );
                debugPrint(response.toString());
              },
              child: const Text("添加声音到黑名单"),
            ),
            const SizedBox(height: 10),
            ElevatedButton(
              onPressed: () async {
                // 示例:验证语音生物识别
                final response = await MindsApiWrapper.service.enrollmentVerify(cpf: "00000000000");
                debugPrint(response.toString());
              },
              child: const Text("验证语音生物识别"),
            ),
            const SizedBox(height: 10),
            ElevatedButton(
              onPressed: () async {
                // 示例:语音生物识别认证
                final response = await MindsApiWrapper.service.enrollmentCertify(
                  request: const EnrollmentCertifyRequest(cpf: '00000000000'),
                );
                debugPrint(response.toString());
              },
              child: const Text("认证语音生物识别"),
            ),
            const SizedBox(height: 10),
            ElevatedButton(
              onPressed: () async {
                // 示例:自定义构建器流程
                Navigator.push(
                  context,
                  MaterialPageRoute(
                    builder: (BuildContext context) => FlowRecordAudio(
                      request: FlowRecordAudioRequest(
                        context: context,
                        biometricsRequest: const FlowBiometricsRequest(
                          cpf: '00000000000',
                          showDetails: true,
                        ),
                        processType: ProcessType.authentication,
                      ),
                      onResponse: (biometricsResponse) {
                        debugPrint("response $biometricsResponse");
                      },
                      onError: (error) {
                        debugPrint("error: $error");
                      },
                      style: const FlowStyle(),
                      customBuilder: (context, recordingState, flowBiometricsState, buttonRecord) =>
                          Scaffold(
                        appBar: AppBar(title: const Text('自定义构建器')),
                        body: Builder(
                          builder: (context) {
                            if (flowBiometricsState.state is LoadingState) {
                              return const Center(
                                child: CircularProgressIndicator(),
                              );
                            }
                            return Column(
                              crossAxisAlignment: CrossAxisAlignment.center,
                              mainAxisAlignment: MainAxisAlignment.spaceEvenly,
                              children: [
                                Center(
                                  child: Text(
                                    flowBiometricsState.randomSentence.sentence.text,
                                    style: const TextStyle(
                                      color: Colors.black,
                                    ),
                                    textAlign: TextAlign.center,
                                  ),
                                ),
                                Row(
                                  crossAxisAlignment: CrossAxisAlignment.center,
                                  mainAxisAlignment: MainAxisAlignment.center,
                                  children: [
                                    Visibility(
                                      visible: recordingState.isRecording,
                                      child: const Text(
                                        '正在录制:',
                                        style: TextStyle(color: Colors.red),
                                      ),
                                    ),
                                    const SizedBox(width: 10),
                                    _buildTimer(recordingState.recordDuration),
                                  ],
                                ),
                                buttonRecord,
                              ],
                            );
                          },
                        ),
                      ),
                    ),
                  ),
                );
              },
              child: const Text("自定义构建器示例"),
            ),
            const SizedBox(height: 10),
            ElevatedButton(
              onPressed: () {
                // 示例:对话框流程
                FlowRecordAudio(
                  request: FlowRecordAudioRequest(
                    context: context,
                    biometricsRequest: const FlowBiometricsRequest(
                      cpf: '00000000000',
                      showDetails: true,
                    ),
                    processType: ProcessType.authentication,
                  ),
                  onResponse: (biometricsResponse) {
                    debugPrint("response: $biometricsResponse");
                  },
                  onError: (error) {
                    debugPrint("error: $error");
                  },
                  style: const FlowStyle(fullScreenDialog: true),
                ).show(context);
              },
              child: const Text('对话框'),
            )
          ],
        ),
      ),
    );
  }
}

// 构建计时器
Widget _buildTimer(int recordDuration) {
  final String minutes = _formatNumber(recordDuration ~/ 60);
  final String seconds = _formatNumber(recordDuration % 60);

  return Text(
    '$minutes : $seconds',
  );
}

// 格式化数字
String _formatNumber(int number) {
  String numberStr = number.toString();
  if (number < 10) {
    numberStr = '0$numberStr';
  }

  return numberStr;
}

更多关于Flutter插件minds_digital的使用方法的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

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


在Flutter中,使用一个功能未知的插件(如minds_digital)可能会带来一些挑战,尤其是当官方文档或社区资源缺乏时。以下是一些步骤和建议,帮助你理解和使用这个插件:

1. 查找插件的来源和文档

  • Pub.dev: 首先,你可以在pub.dev上搜索minds_digital插件,查看是否有官方文档或说明。
  • GitHub: 如果插件是开源的,通常可以在GitHub上找到其源代码和README文件,这些文件可能包含使用说明和示例代码。
  • 社区和论坛: 在Flutter社区、Stack Overflow或GitHub Issues中搜索minds_digital,看看是否有其他开发者分享过使用经验或遇到的问题。

2. 分析插件的依赖和代码

  • 查看pubspec.yaml: 打开插件的pubspec.yaml文件,查看其依赖项和版本信息,这可以帮助你了解插件可能的功能。
  • 阅读源代码: 如果插件是开源的,阅读其源代码可以帮助你理解其功能和工作原理。重点关注lib目录下的Dart文件。

3. 尝试基本集成

  • 添加依赖: 在你的Flutter项目的pubspec.yaml文件中添加minds_digital插件的依赖项。
    dependencies:
      minds_digital: ^版本号
    
  • 导入插件: 在你的Dart文件中导入插件。
    import 'package:minds_digital/minds_digital.dart';
    
  • 初始化插件: 尝试初始化插件并调用其提供的方法或类。
    void main() {
      runApp(MyApp());
    }
    
    class MyApp extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return MaterialApp(
          home: Scaffold(
            appBar: AppBar(
              title: Text('Minds Digital Plugin Example'),
            ),
            body: Center(
              child: ElevatedButton(
                onPressed: () {
                  // 调用插件的方法
                  MindsDigital.initialize();
                },
                child: Text('Initialize Plugin'),
              ),
            ),
          ),
        );
      }
    }
回到顶部