Flutter生物识别认证插件pin_input_biometric_authenticator的使用

Flutter生物识别认证插件pin_input_biometric_authenticator的使用

特性

  • 按键输入
  • 生物识别认证
  • 支持最新原生SDK

演示

在下面的GIF中,你可以看到黑色屏幕,这是当我点击屏幕上的生物识别图标时发生的。 屏幕录制器由于底层操作系统限制无法捕捉。

演示

使用方法

首先,在 AndroidManifest.xml 文件中添加生物识别权限:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="com.example.app">
  <uses-permission android:name="android.permission.USE_BIOMETRIC"/>
</manifest>

然后使用 PinScreenWithBiometric 类来实现功能:

PinScreenWithBiometric(
  controller: textEditingController,
  textFieldLength: 4,
  authResultCallBack: (bool? result) {
    debugPrint("BIOMETRIC RESULT IS `$result`");
  },
),

完整示例

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

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

void main() {
  // 初始化Flutter框架
  WidgetsFlutterBinding.ensureInitialized();
  runApp(const MyApp());
}

class MyApp extends StatefulWidget {
  const MyApp({Key? key}) : super(key: key);

  [@override](/user/override)
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(home: HomeScreen());
  }
}

class HomeScreen extends StatelessWidget {
  HomeScreen({Key? key}) : super(key: key);

  final TextEditingController textEditingController = TextEditingController();

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('插件示例应用'),
      ),
      body: Center(
        child: Column(
          children: [
            PinInputBiometricAuthenticator(
              controller: textEditingController,
              textFieldLength: 6,
              authResultCallBack: (bool? result) {
                debugPrint("BIOMETRIC RESULT IS `$result`");

                // 弹出对话框展示结果
                showDialog(
                    context: context,
                    builder: (_) {
                      return SizedBox(
                        height: 200,
                        width: 200,
                        child: AlertDialog(
                          title: Center(
                              child: Column(
                            mainAxisAlignment: MainAxisAlignment.center,
                            crossAxisAlignment: CrossAxisAlignment.center,
                            children: [
                              result!
                                  ? Container(
                                      height: 50,
                                      width: 50,
                                      decoration: BoxDecoration(
                                          color: Colors.green,
                                          borderRadius:
                                              BorderRadius.circular(25)),
                                      child: const Icon(Icons.add))
                                  : Container(
                                      height: 50,
                                      width: 50,
                                      decoration: BoxDecoration(
                                          color: Colors.red,
                                          borderRadius:
                                              BorderRadius.circular(25)),
                                      child: const Icon(Icons.sms_failed)),
                              const SizedBox(
                                height: 10,
                              ),
                              Text(
                                  "生物识别 ${result ? '成功' : '失败'}"),
                            ],
                          )),
                          content: Text(
                              "你已经 ${result ? '成功' : '失败'} 进行了身份验证"),
                        ),
                      );
                    });
              },
            ),
          ],
        ),
      ),
    );
  }
}

更多关于Flutter生物识别认证插件pin_input_biometric_authenticator的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter生物识别认证插件pin_input_biometric_authenticator的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


pin_input_biometric_authenticator 是一个 Flutter 插件,用于在应用程序中集成了生物识别认证和 PIN 码输入的功能。它允许用户在需要认证时选择使用生物识别(如指纹或面部识别)或输入 PIN 码。以下是如何使用该插件的详细步骤:

1. 添加依赖项

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

dependencies:
  flutter:
    sdk: flutter
  pin_input_biometric_authenticator: ^1.0.0  # 请确保使用最新版本

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

2. 导入插件

在你的 Dart 文件中导入插件:

import 'package:pin_input_biometric_authenticator/pin_input_biometric_authenticator.dart';

3. 初始化插件

在使用插件之前,你需要初始化它。通常可以在 initState 方法中进行初始化:

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  final PinInputBiometricAuthenticator _authenticator = PinInputBiometricAuthenticator();

  @override
  void initState() {
    super.initState();
    _authenticator.initialize();
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('PIN & Biometric Auth'),
        ),
        body: Center(
          child: ElevatedButton(
            onPressed: _authenticate,
            child: Text('Authenticate'),
          ),
        ),
      ),
    );
  }

  Future<void> _authenticate() async {
    try {
      bool isAuthenticated = await _authenticator.authenticate();
      if (isAuthenticated) {
        print('Authentication successful');
      } else {
        print('Authentication failed');
      }
    } catch (e) {
      print('Error during authentication: $e');
    }
  }
}

4. 使用认证功能

在上面的代码中,_authenticate 方法调用了 _authenticator.authenticate(),它会弹出一个对话框,允许用户选择使用生物识别认证或输入 PIN 码。认证成功后,authenticate 方法会返回 true,否则返回 false

5. 自定义 PIN 码输入和生物识别选项

你可以通过传递参数来自定义 PIN 码输入和生物识别认证的外观和行为。例如:

bool isAuthenticated = await _authenticator.authenticate(
  biometricOnly: false, // 是否仅使用生物识别认证
  localizedReason: 'Authenticate to access the app', // 显示给用户的提示信息
  cancelButton: 'Cancel', // 取消按钮的文本
  pinInputTitle: 'Enter your PIN', // PIN 输入对话框的标题
  biometricButtonText: 'Use Fingerprint', // 生物识别按钮的文本
);

6. 处理错误

在使用过程中,可能会遇到各种错误,例如设备不支持生物识别认证、用户取消认证等。你可以通过捕获异常来处理这些错误:

try {
  bool isAuthenticated = await _authenticator.authenticate();
  if (isAuthenticated) {
    print('Authentication successful');
  } else {
    print('Authentication failed');
  }
} catch (e) {
  print('Error during authentication: $e');
}
回到顶部