Flutter生物识别认证插件local_biometric_auth的使用

Flutter生物识别认证插件local_biometric_auth的使用

local_biometric_auth 插件用于在 Flutter 应用中实现生物识别认证功能。该插件支持指纹识别和面部识别等功能。

获取开始

本项目是一个用于 Flutter 的插件包,包含适用于 Android 和/或 iOS 平台的特定实现代码。

对于 Flutter 开发的帮助,可以查看官方文档,包括教程、示例、移动开发指南和完整的 API 参考。

示例代码

以下是一个使用 local_biometric_auth 插件的完整示例代码:

import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:get_storage/get_storage.dart';
import 'package:local_biometric_auth/local_biometric_auth.dart';
import 'package:provider/provider.dart';

import 'states/states.dart';
import 'widgets/widgets.dart';

void main() async {
  // 初始化 GetStorage
  await GetStorage.init();
  
  // 运行应用
  runApp(MultiProvider(
    providers: [
      // 提供状态管理器
      ChangeNotifierProvider(create: (_) => AppState()),
      ChangeNotifierProvider(create: (_) => MessagesState()),
    ],
    child: MyAppCheckVersion(),
  ));
}

// 主应用类
class App extends StatelessWidget {
  const App({Key? key}) : super(key: key);

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      theme: ThemeData(
        brightness: Brightness.light,
      ),
      darkTheme: ThemeData(
        brightness: Brightness.dark,
      ),
      themeMode: ThemeMode.dark,
      home: const Home(),
    );
  }
}

// 主页面
class Home extends StatelessWidget {
  const Home({Key? key}) : super(key: key);

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Consumer<AppState>(
      builder: (_, app, __) => WillPopScope(
        onWillPop: () {
          if (app.isWrite || app.isRead) {
            app.showList();
            return Future.value(false);
          }
          return Future.value(true);
        },
        child: Scaffold(
          appBar: AppBar(
            title: Text('BiometricX'),
            centerTitle: true,
          ),
          body: Builder(
            builder: (_) {
              if (app.isWrite) return WriteMessage();
              if (app.isRead) return ReadMessage(app.currentMessage);
              return MessageList();
            },
          ),
          floatingActionButtonLocation: FloatingActionButtonLocation.centerFloat,
          floatingActionButton: app.isList
              ? FloatingActionButton(
                  child: Icon(Icons.add_rounded),
                  onPressed: app.write,
                )
              : null,
        ),
      ),
    );
  }
}

// 版本检查器
class MyAppCheckVersion extends StatefulWidget {
  const MyAppCheckVersion({Key? key}) : super(key: key);

  [@override](/user/override)
  State<MyAppCheckVersion> createState() => _MyAppState();
}

class _MyAppState extends State<MyAppCheckVersion> {
  final _youtubeChecker = AppVersionChecker(
    appId: "com.runsystem.wesmile",
    androidStore: AndroidStore.apkPure,
  );
  final _snapChatChecker = AppVersionChecker(
    appId: "com.runsystem.wesmile",
  );
  String? snapValue;
  String? youtubeValue;

  [@override](/user/override)
  void initState() {
    super.initState();
    checkVersion();
  }

  void checkVersion() async {
    await Future.wait([
      _snapChatChecker.checkUpdate().then(
        (value) {
          snapValue = value.toString();
        },
      ),
      _youtubeChecker.checkUpdate().then((value) => youtubeValue = value.toString()),
    ]);
    setState(() {});
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('APP Version Checker'),
        ),
        body: Padding(
          padding: const EdgeInsets.all(12.0),
          child: ListView(
            children: [
              const SizedBox(height: 25.0),
              const Text(
                "Facebook: (playstore)",
                style: TextStyle(fontWeight: FontWeight.bold),
              ),
              const SizedBox(height: 10.0),
              Text(
                snapValue ?? 'Loading ...',
              ),
              const SizedBox(height: 50.0),
              const Text(
                "Youtube Vanced (apkPure):",
                style: TextStyle(fontWeight: FontWeight.bold),
              ),
              const SizedBox(height: 10.0),
              Text(
                youtubeValue ?? "loading ...",
              ),
            ],
          ),
        ),
      ),
    );
  }
}

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

1 回复

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


Flutter 提供了 local_auth 插件来实现生物识别认证(如指纹、面部识别等),而不是 local_biometric_authlocal_auth 是 Flutter 官方推荐的插件,支持 Android 和 iOS 平台。

以下是使用 local_auth 插件实现生物识别认证的步骤:

1. 添加依赖

首先,在 pubspec.yaml 文件中添加 local_auth 插件的依赖:

dependencies:
  flutter:
    sdk: flutter
  local_auth: ^2.1.1  # 请使用最新版本

然后运行 flutter pub get 来安装依赖。

2. 配置 Android 和 iOS

Android

AndroidManifest.xml 文件中添加以下权限:

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

iOS

Info.plist 文件中添加以下键值对:

<key>NSFaceIDUsageDescription</key>
<string>我们需要使用 Face ID 来验证您的身份</string>

3. 编写代码

在 Flutter 项目中使用 local_auth 插件进行生物识别认证的示例代码如下:

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

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

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: BiometricAuthScreen(),
    );
  }
}

class BiometricAuthScreen extends StatefulWidget {
  [@override](/user/override)
  _BiometricAuthScreenState createState() => _BiometricAuthScreenState();
}

class _BiometricAuthScreenState extends State<BiometricAuthScreen> {
  final LocalAuthentication _localAuth = LocalAuthentication();

  String _authResult = '';

  Future<void> _authenticate() async {
    bool authenticated = false;
    try {
      // 检查设备是否支持生物识别
      bool canCheckBiometrics = await _localAuth.canCheckBiometrics;
      bool isDeviceSupported = await _localAuth.isDeviceSupported();

      if (!canCheckBiometrics || !isDeviceSupported) {
        setState(() {
          _authResult = '设备不支持生物识别';
        });
        return;
      }

      // 进行生物识别认证
      authenticated = await _localAuth.authenticate(
        localizedReason: '请验证您的身份以继续',
        options: const AuthenticationOptions(
          useErrorDialogs: true,
          stickyAuth: true,
        ),
      );

      setState(() {
        _authResult = authenticated ? '认证成功' : '认证失败';
      });
    } catch (e) {
      setState(() {
        _authResult = '认证出错: $e';
      });
    }
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('生物识别认证'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            ElevatedButton(
              onPressed: _authenticate,
              child: Text('进行生物识别认证'),
            ),
            SizedBox(height: 20),
            Text(_authResult),
          ],
        ),
      ),
    );
  }
}
回到顶部