Flutter生物认证插件biometric_authentication的使用

发布于 1周前 作者 itying888 来自 Flutter

Flutter生物认证插件biometric_authentication的使用

生物认证服务

biometric_authentication 是一个用于将生物认证(人脸、指纹、图案或密码)集成到你的应用中的 Flutter 包。

特性

  • 当点击一个提升按钮时,会弹出一个生物认证对话框。然后,通过回调函数,我们可以在成功认证后进行导航。
  • 成功通过人脸、指纹或密码/图案验证后,你可以根据手机设置进行导航。

开始使用

导入

import 'package:biometric_authentication/biometric_authentication.dart';

Android 集成

  • 插件可以在 SDK 16+ 上构建和运行,但在 SDK 23(Android 6.0)之前,isDeviceSupported() 总是返回 false

活动更改

请注意,biometric_authentication 需要使用 FragmentActivity 而不是 Activity。更新你的应用:

  • 如果你直接使用 FlutterActivity,请将其更改为 AndroidManifest.xml 中的 FlutterFragmentActivity
  • 如果你使用的是自定义活动,请更新你的 MainActivity.java
import io.flutter.embedding.android.FlutterFragmentActivity;

public class MainActivity extends FlutterFragmentActivity {
  // ...
}

或者 MainActivity.kt

import io.flutter.embedding.android.FlutterFragmentActivity

class MainActivity: FlutterFragmentActivity() {
  // ...
}

使其继承自 FlutterFragmentActivity

权限

在项目的 AndroidManifest.xml 文件中更新权限以包含 USE_BIOMETRIC

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

使用

要在 pubspec.yaml 文件中使用此包,请添加以下依赖:

dependencies:
  biometric_authentication: ^1.0.5

完整示例

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

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

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

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: '生物认证示例',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('生物认证示例'),
      ),
      body: Center(
        child: BiometricAuthService(
          title: '生物认证',
          onAuthentication: (bool isAuthenticated) {
            // 处理认证状态
            if (isAuthenticated) {
              // 认证完成后跳转到下一个屏幕
              Navigator.pushReplacement(
                context,
                MaterialPageRoute(builder: (context) => const SecondScreen()),
              );
              // 认证成功
              ScaffoldMessenger.of(context).showSnackBar(
                SnackBar(
                  content: Text('认证成功'),
                  duration: Duration(seconds: 2),
                ),
              );
            } else {
              // 认证失败
              ScaffoldMessenger.of(context).showSnackBar(
                SnackBar(
                  content: Text('认证失败'),
                  duration: Duration(seconds: 2),
                ),
              );
            }
          },
        ),
      ),
    );
  }
}

// 认证成功后显示的屏幕
class SecondScreen extends StatelessWidget {
  const SecondScreen({super.key});

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('第二屏'),
      ),
      // 认证成功后的文本
      body: const Center(
        child: Text('欢迎来到第二屏!'),
      ),
    );
  }
}

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

1 回复

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


biometric_authentication 是 Flutter 中用于处理生物认证(如指纹、面部识别等)的插件。通过这个插件,你可以轻松地在 Flutter 应用中集成生物认证功能。以下是使用 biometric_authentication 插件的详细步骤:

1. 添加依赖

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

dependencies:
  flutter:
    sdk: flutter
  biometric_authentication: ^1.0.0

然后运行 flutter pub get 来安装插件。

2. 导入包

在你的 Dart 文件中导入 biometric_authentication 包:

import 'package:biometric_authentication/biometric_authentication.dart';

3. 检查生物认证是否可用

在进行生物认证之前,你需要检查设备是否支持生物认证功能:

Future<void> checkBiometrics() async {
  bool canCheckBiometrics = await BiometricAuthentication.canCheckBiometrics;
  print('Can check biometrics: $canCheckBiometrics');
}

4. 获取可用的生物认证类型

你可以获取设备支持的生物认证类型(如指纹、面部识别等):

Future<void> getAvailableBiometrics() async {
  List<BiometricType> availableBiometrics = await BiometricAuthentication.getAvailableBiometrics();
  print('Available biometrics: $availableBiometrics');
}

5. 进行生物认证

接下来,你可以调用 authenticate 方法来进行生物认证:

Future<void> authenticate() async {
  bool authenticated = await BiometricAuthentication.authenticate(
    localizedReason: '请进行生物认证以继续',
    useErrorDialogs: true, // 如果认证失败,是否显示系统默认的错误对话框
    stickyAuth: false, // 是否在后台时保持认证状态
  );
  print('Authenticated: $authenticated');
}

6. 处理认证结果

在认证完成后,你可以根据 authenticated 的值来判断认证是否成功,并执行相应的操作:

if (authenticated) {
  // 认证成功,执行相应操作
} else {
  // 认证失败,提示用户
}

7. 处理异常

在处理生物认证时,可能会遇到各种异常情况,例如设备不支持、用户取消认证等。你可以使用 try-catch 来处理这些异常:

try {
  await authenticate();
} catch (e) {
  print('Authentication failed: $e');
}

8. 完整的示例代码

以下是一个完整的示例代码,展示了如何使用 biometric_authentication 插件进行生物认证:

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

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

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('生物认证示例'),
        ),
        body: Center(
          child: BiometricAuthButton(),
        ),
      ),
    );
  }
}

class BiometricAuthButton extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return ElevatedButton(
      onPressed: () async {
        try {
          bool canCheckBiometrics = await BiometricAuthentication.canCheckBiometrics;
          print('Can check biometrics: $canCheckBiometrics');

          if (canCheckBiometrics) {
            List<BiometricType> availableBiometrics = await BiometricAuthentication.getAvailableBiometrics();
            print('Available biometrics: $availableBiometrics');

            bool authenticated = await BiometricAuthentication.authenticate(
              localizedReason: '请进行生物认证以继续',
              useErrorDialogs: true,
              stickyAuth: false,
            );

            if (authenticated) {
              print('认证成功');
            } else {
              print('认证失败');
            }
          } else {
            print('设备不支持生物认证');
          }
        } catch (e) {
          print('Authentication failed: $e');
        }
      },
      child: Text('进行生物认证'),
    );
  }
}
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!