您的位置:首页 > 游戏 > 手游 > 网站开发与优化课程总结_wordpress收费吗_企业seo关键字优化_深圳百度推广竞价托管

网站开发与优化课程总结_wordpress收费吗_企业seo关键字优化_深圳百度推广竞价托管

2025/4/25 12:06:11 来源:https://blog.csdn.net/qq_52871405/article/details/144109389  浏览:    关键词:网站开发与优化课程总结_wordpress收费吗_企业seo关键字优化_深圳百度推广竞价托管
网站开发与优化课程总结_wordpress收费吗_企业seo关键字优化_深圳百度推广竞价托管

在这篇博客中,我们将介绍如何使用 Flutter 的 local_auth 插件在 Android 和 iOS 设备上实现指纹识别功能。通过这一步一步的实现,我们将学习如何检查设备是否支持生物识别、如何触发指纹验证,并处理可能出现的错误。

效果图(因为录屏时系统不能录制指纹页面,所以黑屏;实际跑起来是正常的:

1. 安装 local_auth 插件

插件地址:https://pub.dev/packages/local_auth

在 pubspec.yaml 文件中添加了 local_auth 插件依赖:

dependencies:flutter:sdk: flutterlocal_auth: ^2.1.3

2. 修改 Android 配置

2.1 在 AndroidManifest.xml 文件中添加权限,以允许应用访问生物识别硬件:

<uses-permission android:name="android.permission.USE_BIOMETRIC"/>
<uses-permission android:name="android.permission.USE_FINGERPRINT"/>

2.2 MainActivity 继承自 FlutterFragmentActivity,并且注册插件引擎

package com.example.test1import io.flutter.embedding.android.FlutterFragmentActivity;
import io.flutter.plugins.GeneratedPluginRegistrant
import io.flutter.embedding.engine.FlutterEngineclass MainActivity: FlutterFragmentActivity() {override fun configureFlutterEngine(flutterEngine: FlutterEngine) {GeneratedPluginRegistrant.registerWith(flutterEngine)}
}

2.3 在android/app/src/main/res/values/styles.xml 文件下这样改:

<style name="LaunchTheme" parent="Theme.AppCompat.DayNight">

3. 实现指纹识别功能

接下来,我们编写 Flutter 代码,使用 local_auth 插件实现指纹识别。我们的应用将包含以下功能:

  1. 检查设备是否支持指纹识别。
  2. 在支持指纹识别的设备上执行身份验证。

以下是主要的 Flutter 代码:

import 'dart:io';import 'package:flutter/material.dart';
import 'package:local_auth/local_auth.dart';
import 'package:flutter/services.dart';
import 'package:local_auth_ios/local_auth_ios.dart';
import 'package:local_auth_android/local_auth_android.dart';void main() {runApp(const MyApp());
}class MyApp extends StatelessWidget {const MyApp({super.key});@overrideWidget build(BuildContext context) {return MaterialApp(title: '指纹识别 Demo',theme: ThemeData(primarySwatch: Colors.blue,),home: const FingerprintDemo(),);}
}class FingerprintDemo extends StatefulWidget {const FingerprintDemo({super.key});@override_FingerprintDemoState createState() => _FingerprintDemoState();
}class _FingerprintDemoState extends State<FingerprintDemo> {final LocalAuthentication auth = LocalAuthentication();String _message = "请点击按钮进行指纹识别";bool haveFingerprint = false;// 检查设备是否支持生物识别--手机必须要设置密码和开启指纹功能Future<void> _checkBiometricSupport() async {haveFingerprint = await isSupportBiometric();setState(() {if (haveFingerprint) {_message = "设备支持指纹识别";} else {_message = "该设备不支持指纹识别";}});}// 尝试进行指纹识别Future<void> _authenticateWithFingerprint() async {try {bool authenticated = await auth.authenticate(localizedReason: ' ',authMessages: [const AndroidAuthMessages(biometricHint: '扫描指纹进行身份验证',cancelButton: '取消',signInTitle: '指纹验证',),const IOSAuthMessages(lockOut: '验证身份失败,请重新验证',cancelButton: '取消',)],options: const AuthenticationOptions(useErrorDialogs: false,biometricOnly: true,));setState(() {if (authenticated) {_message = "指纹验证成功";} else {_message = "指纹验证失败";}});} on PlatformException catch (e) {setState(() {_message = "错误: ${e.message}";});}}isSupportBiometric() async {late List<BiometricType> availableBiometrics;try {availableBiometrics = await auth.getAvailableBiometrics();print(availableBiometrics);if (availableBiometrics.isNotEmpty) {if (Platform.isIOS) {if (availableBiometrics.contains(BiometricType.fingerprint)) {return true;}} else {return true;}}} on PlatformException catch (e) {availableBiometrics = <BiometricType>[];print(e);}return false;}@overridevoid initState() {super.initState();_checkBiometricSupport();  // 启动时检查设备支持情况}@overrideWidget build(BuildContext context) {return Scaffold(appBar: AppBar(title: const Text("指纹识别 Demo"),),body: Center(child: Column(mainAxisAlignment: MainAxisAlignment.center,children: <Widget>[Text(_message,style: const TextStyle(fontSize: 20),),const SizedBox(height: 20),ElevatedButton(onPressed: _authenticateWithFingerprint,child: const Text("使用指纹验证"),),],),),);}
}

4.代码解析

注意:只有手机设置了密码和开启了指纹功能才可以用这个功能

  1. _checkBiometricSupport:首先检查设备是否支持指纹识别。通过调用 auth.getAvailableBiometrics() 来获取设备支持的生物识别类型。如果设备支持指纹识别或面部识别,将更新 _message

  2. _authenticateWithFingerprint:触发指纹验证。如果设备支持并且用户点击按钮,应用会弹出指纹识别对话框,并根据用户的验证结果更新 _message

  3. isSupportBiometric:通过调用 auth.getAvailableBiometrics() 来获取设备支持的生物识别类型。如果设备支持指纹或面部识别,返回 true

  4. AuthenticationOptions:配置 local_auth 插件的一些选项,如禁用默认的错误对话框(useErrorDialogs: false)和只允许使用生物识别进行验证(biometricOnly: true)。

总结

通过本文,我们介绍了如何使用 local_auth 插件实现 Flutter 应用中的指纹识别功能。通过设置合适的配置和调用插件提供的 API,你可以轻松地在 Android 和 iOS 设备上实现生物识别验证功能。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com