前言

最近在家里也比较闲,所以就是研究研究自己没有涉及到的功能。今天就是在这里跟大家分享一下Flutter完成指纹识别功能

技术栈

local_auth: ^0.3.0

实例代码分析

引入依赖

在这里插入图片描述

编写简单的指纹识别小实例

import 'dart:async';

import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:local_auth/local_auth.dart';

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

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

class _MyAppState extends State<MyApp> {
  /// 本地认证框架
  final LocalAuthentication auth = LocalAuthentication();

  /// 识别结果
  String _authorized = '验证失败';


  /// 生物识别
  Future<Null> _authenticate() async {
    bool authenticated = false;
    try {
      authenticated = await auth.authenticateWithBiometrics(
          localizedReason: '扫描指纹进行身份验证',
          useErrorDialogs: true,
          stickyAuth: false);
    } on PlatformException catch (e) {
      print(e);
    }
    if (!mounted) return;

    setState(() {
      _authorized = authenticated ? '验证通过' : '验证失败';
    });
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
        home: Scaffold(
          appBar: AppBar(
            title: const Text('插件的示例应用程序'),
          ),
          body: ConstrainedBox(
              constraints: const BoxConstraints.expand(),
              child: Column(
                  mainAxisAlignment: MainAxisAlignment.spaceAround,
                  children: <Widget>[
                    Text('状态: $_authorized\n'),
                    RaisedButton(
                      child: const Text('验证'),
                      onPressed: _authenticate,
                    )
                  ])),
        ));
  }
}

设置配置项

android

首先,我们必须更新AndoridManifest.xml文件以包含USE_FINGERPRINT权限,如下所示

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.demo">


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

其次到build.gradle中,targetSdkVersion修改成如下所示

defaultConfig {
        // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
        applicationId "com.example.demo"
        minSdkVersion 16
        targetSdkVersion 27
        versionCode flutterVersionCode.toInteger()
        versionName flutterVersionName
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }

IOS

local_auth插件适用​​于TouchID和FaceID。但是,对于后者,我们需要将以下键值对添加到info.plist文件中

...
<key>NSFaceIDUsageDescription</key>
<string>Why is my app authenticating using face id?</string>
...

总结

希望这篇博客可以帮助到有需要的朋友

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐