You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter LocalAuthentication报authenticateWithBiometrics未定义错误

报错原因

该报错由local_auth依赖包的破坏性API变更导致:
local_auth 2.0.0及以上版本正式移除了旧版的authenticateWithBiometrics方法,将生物识别、设备密码/PIN等所有本地认证能力统一整合到了新的authenticate方法中,调用已被删除的旧方法就会触发该编译错误。
同时当前代码中从flutter_local_auth_invisible包导入AndroidAuthMessages的写法也存在兼容问题:高版本local_auth已经将各平台的认证提示文案类拆分到了对应的官方平台实现包中,不需要再从第三方衍生包导入相关类。

修复步骤
  • 调整依赖配置:在pubspec.yaml中升级local_auth到2.x版本,同时添加官方平台实现包依赖,配置完成后执行flutter pub get拉取依赖:
dependencies:
  flutter:
    sdk: flutter
  local_auth: ^2.1.7
  local_auth_android: ^1.0.35
  local_auth_darwin: ^1.2.4
  • 修正导入语句:删除代码中import 'package:flutter_local_auth_invisible/auth_strings.dart';这行无效导入,替换为官方包的导入。
  • 替换认证调用逻辑:将原来的authenticateWithBiometrics调用替换为新的authenticate方法,传入biometricOnly: true参数保持原有“仅允许生物识别认证”的逻辑,原有useErrorDialogs、stickyAuth等参数统一移动到AuthenticationOptions配置类中传入。
  • 补全iOS权限配置:打开iOS项目的ios/Runner/Info.plist文件,添加Face ID权限描述,否则运行到iOS设备会触发权限崩溃:
<key>NSFaceIDUsageDescription</key>
<string>需要使用面容ID完成身份验证</string>

修复后的完整可运行代码如下:

import 'package:flutter/services.dart';
import 'package:local_auth/local_auth.dart';
import 'package:local_auth_android/local_auth_android.dart';
import 'package:local_auth_darwin/local_auth_darwin.dart';

class LocalAuthApi {
  static final _auth = LocalAuthentication();

  static Future<bool> hasBiometrics() async {
    try {
      return await _auth.canCheckBiometrics;
    } on PlatformException catch (e) {
      return false;
    }
  }

  static Future<bool> authenticate() async {
    final isAvailable = await hasBiometrics();
    if (!isAvailable) return false;

    try {
      return await _auth.authenticate(
        authMessages: const [
          AndroidAuthMessages(
            signInTitle: 'Face ID Required',
          ),
          IOSAuthMessages(
            cancelButton: '取消',
          ),
        ],
        localizedReason: 'Scan Face to Authenticate',
        options: const AuthenticationOptions(
          biometricOnly: true,
          useErrorDialogs: false,
          stickyAuth: false,
        ),
      );
    } on PlatformException catch (e) {
      return false;
    }
  }
}

内容的提问来源于stack exchange,提问作者David Babalola

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 18:24:39