flutter_lock_screen

此包为您提供了漂亮的密码页,可用于 Android 和 iOS。

Flutter-Pass-Code

指纹使用

首先,您应该确保将 local_auth 包添加为依赖项。
https://pub.dartlang.org/packages/local_auth

iOS 集成
请注意,此插件同时支持 TouchID 和 FaceID。但是,要使用后者,您还需要添加

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

到您的 Info.plist 文件中。否则,将显示一个对话框,告知用户您的应用尚未更新为使用 TouchID。

Android 集成
更新您项目的 AndroidManifest.xml 文件以包含 USE_FINGERPRINT 权限

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="com.example.app">
  <uses-permission android:name="android.permission.USE_FINGERPRINT"/>
<manifest>

用法

使用起来非常简单!
您应该确保将 flutter_lock_screen 添加为 Flutter 项目的依赖项。

dependencies:
  flutter_lock_screen: '^1.0.5'

然后,您可以使用以下示例:

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

class PassCodeScreen extends StatefulWidget {
  PassCodeScreen({Key key, this.title}) : super(key: key);

  final String title;

  @override
  _PassCodeScreenState createState() => new _PassCodeScreenState();
}

class _PassCodeScreenState extends State<PassCodeScreen> {
  bool isFingerprint;

  Future<Null> biometrics() async {
    final LocalAuthentication auth = new LocalAuthentication();
    bool authenticated = false;

    try {
      authenticated = await auth.authenticateWithBiometrics(
          localizedReason: 'Scan your fingerprint to authenticate',
          useErrorDialogs: true,
          stickyAuth: false);
    } on PlatformException catch (e) {
      print(e);
    }
    if (!mounted) return;
    if (authenticated) {
      setState(() {
        isFingerprint = true;
      });
    }
  }

  @override
  Widget build(BuildContext context) {
    var myPass = [1, 2, 3, 4];
    return LockScreen(
        title: "This is Screet ",
        passLength: myPass.length,
        bgImage: "images/pass_code_bg.jpg",
        fingerPrintImage: "images/fingerprint.png",
        showFingerPass: true,
        fingerFunction: biometrics,
        fingerVerify: isFingerprint,
        borderColor: Colors.white,
        showWrongPassDialog: true,
        wrongPassContent: "Wrong pass please try again.",
        wrongPassTitle: "Opps!",
        wrongPassCancelButtonText: "Cancel",
        passCodeVerify: (passcode) async {
          for (int i = 0; i < myPass.length; i++) {
            if (passcode[i] != myPass[i]) {
              return false;
            }
          }

          return true;
        },
        onSuccess: () {
          Navigator.of(context).pushReplacement(
              new MaterialPageRoute(builder: (BuildContext context) {
            return EmptyPage();
          }));
        });
  }
}

GitHub

https://github.com/kalismeras61/flutter_lock_screen