Flutter中如何使用auth.getavailablebiometrics()获取可用生物识别

在Flutter中调用auth.getAvailableBiometrics()时,总是返回空列表,但设备明明支持指纹识别。具体代码如下:

final availableBiometrics = await auth.getAvailableBiometrics();
print(availableBiometrics); // 输出[]

已经确认:

  1. 设备已设置指纹解锁
  2. AndroidManifest.xml已添加USE_BIOMETRIC权限
  3. 测试机是Android 10系统

请问可能是什么原因导致无法获取可用的生物识别方式?是否需要额外配置或其他检测步骤?


更多关于Flutter中如何使用auth.getavailablebiometrics()获取可用生物识别的实战教程也可以访问 https://www.itying.com/category-92-b0.html

2 回复

在Flutter中使用auth.getAvailableBiometrics()方法:

  1. 导入local_auth
  2. 检查生物识别支持:
List<BiometricType> availableBiometrics = 
    await auth.getAvailableBiometrics();
  1. 返回结果包含支持的生物识别类型列表,如指纹、面容等

更多关于Flutter中如何使用auth.getavailablebiometrics()获取可用生物识别的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在Flutter中,使用 auth.getAvailableBiometrics() 需要先安装 local_auth 插件,然后检查设备支持的生物识别类型。

步骤:

  1. 添加依赖
    pubspec.yaml 中添加:

    dependencies:
      local_auth: ^2.1.2
    

    运行 flutter pub get

  2. 配置平台权限

    • Android:在 AndroidManifest.xml 中添加:
      <uses-permission android:name="android.permission.USE_BIOMETRIC" />
      
    • iOS:在 Info.plist 中添加:
      <key>NSFaceIDUsageDescription</key>
      <string>需要FaceID进行身份验证</string>
      
  3. 代码实现

    import 'package:flutter/services.dart';
    import 'package:local_auth/local_auth.dart';
    
    class BiometricAuth {
      static final LocalAuthentication auth = LocalAuthentication();
    
      // 获取可用生物识别方式
      static Future<List<BiometricType>> getAvailableBiometrics() async {
        try {
          return await auth.getAvailableBiometrics();
        } on PlatformException catch (e) {
          print("错误: ${e.message}");
          return [];
        }
      }
    }
    
    // 使用示例
    void checkBiometrics() async {
      List<BiometricType> availableBiometrics = 
          await BiometricAuth.getAvailableBiometrics();
      
      if (availableBiometrics.isNotEmpty) {
        print("可用生物识别: $availableBiometrics");
        // 可能返回: [BiometricType.fingerprint, BiometricType.face]
      } else {
        print("无可用生物识别");
      }
    }
    

返回值说明

  • BiometricType.fingerprint:指纹识别
  • BiometricType.face:面部识别(包括Face ID)
  • BiometricType.iris:虹膜识别(部分Android设备)

注意事项

  • 调用前需确保设备已设置生物识别
  • 部分Android设备可能不支持此功能
  • 实际使用时建议先检查生物识别是否可用再调用验证方法

通过这种方式可以安全获取设备支持的生物识别方式,为后续身份验证做准备。

回到顶部