Last updated:
0 purchases
flutter local auth invisible
flutter_local_auth_invisible #
This Flutter plugin is a fork of the official local_auth
plugin and provides means to perform local, on-device authentication of
the user.
This means referring to biometric authentication on iOS (Touch ID or lock code)
and the fingerprint APIs on Android (introduced in Android 6.0).
On Android this plugin suppresses the standard system-wide fingerprint authentication dialog,
so you are free to implement your own UI.
Usage in Dart #
Import the relevant file:
import 'package:flutter_local_auth_invisible/flutter_local_auth_invisible.dart';
copied to clipboard
To check whether there is local authentication available on this device or not, call canCheckBiometrics:
bool canCheckBiometrics = await LocalAuthentication.canCheckBiometrics;
copied to clipboard
Currently the following biometric types are implemented:
BiometricType.face
BiometricType.fingerprint
To get a list of enrolled biometrics, call getAvailableBiometrics:
List<BiometricType> availableBiometrics = await LocalAuthentication.getAvailableBiometrics();
if (availableBiometrics.contains(BiometricType.face)) {
// Face ID.
} else if (availableBiometrics.contains(BiometricType.fingerprint)) {
// Touch ID.
}
copied to clipboard
We have default dialogs with an 'OK' button to show authentication error
messages for the following 2 cases:
Passcode/PIN/Pattern Not Set. The user has not yet configured a passcode on
iOS or PIN/pattern on Android.
Touch ID/Fingerprint Not Enrolled. The user has not enrolled any
fingerprints on the device.
Which means, if there's no fingerprint on the user's device, a dialog with
instructions will pop up to let the user set up fingerprint. If the user clicks
'OK' button, it will return 'false'.
Use the exported APIs to trigger local authentication with default dialogs:
bool didAuthenticate =
await LocalAuthentication.authenticateWithBiometrics(
localizedReason: 'Please authenticate to show account balance',
);
copied to clipboard
If you don't want to use the default dialogs, call this API with
'useErrorDialogs = false'. In this case, it will throw the error message back
and you need to handle them in your dart code:
bool didAuthenticate =
await LocalAuthentication.authenticateWithBiometrics(
localizedReason: 'Please authenticate to show account balance',
useErrorDialogs: false,
);
copied to clipboard
You can use our default dialog messages, or you can use your own messages by
passing in IOSAuthMessages and AndroidAuthMessages:
import 'package:local_auth/auth_strings.dart';
const iosStrings = const IOSAuthMessages(
cancelButton: 'cancel',
goToSettingsButton: 'settings',
goToSettingsDescription: 'Please set up your Touch ID.',
lockOut: 'Please reenable your Touch ID',
);
await LocalAuthentication.authenticateWithBiometrics(
localizedReason: 'Please authenticate to show account balance',
iOSAuthStrings: iosStrings,
useErrorDialogs: false,
);
copied to clipboard
If needed, you can manually stop authentication for Android:
void _cancelAuthentication() {
LocalAuthentication.stopAuthentication();
}
copied to clipboard
Exceptions #
There are 4 types of exceptions: PasscodeNotSet, NotEnrolled, NotAvailable and
OtherOperatingSystem. They are wrapped in LocalAuthenticationError class. You can
catch the exception and handle them by different types. For example:
import 'package:flutter/services.dart';
import 'package:local_auth/error_codes.dart' as auth_error;
try {
bool didAuthenticate = await LocalAuthentication.authenticate(
localizedReason: 'Please authenticate to show account balance',
);
} on PlatformException catch (e) {
if (e.code == auth_error.notAvailable) {
// Handle this exception here.
}
}
copied to clipboard
iOS Integration #
Note that this plugin works with both TouchID and FaceID. However, to use the latter,
you need to also add:
<key>NSFaceIDUsageDescription</key>
<string>Why is my app authenticating using face id?</string>
copied to clipboard
to your Info.plist file. Failure to do so results in a dialog that tells the user your
app has not been updated to use TouchID.
Android Integration #
Update your project's AndroidManifest.xml file to include the
USE_FINGERPRINT permissions:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.app">
<uses-permission android:name="android.permission.USE_FINGERPRINT"/>
<manifest>
copied to clipboard
Sticky Auth #
You can set the stickyAuth option on the plugin to true so that plugin does not
return failure if the app is put to background by the system. This might happen
if the user receives a phone call before they get a chance to authenticate. With
stickyAuth set to false, this would result in plugin returning failure result
to the Dart app. If set to true, the plugin will retry authenticating when the
app resumes.
For personal and professional use. You cannot resell or redistribute these repositories in their original state.
There are no reviews.