mirror of
https://github.com/Iconica-Development/flutter_login_widget.git
synced 2025-05-19 05:33:45 +02:00
36 lines
1.1 KiB
Dart
36 lines
1.1 KiB
Dart
import "package:flutter/services.dart";
|
|
import "package:flutter_login/src/config/login_options.dart";
|
|
import "package:local_auth/local_auth.dart";
|
|
|
|
class LocalAuthService {
|
|
final LocalAuthentication _localAuth = LocalAuthentication();
|
|
|
|
Future<void> authenticate(LoginOptions loginOptions) async {
|
|
var biometricsOptions = loginOptions.biometricsOptions;
|
|
|
|
try {
|
|
if (!await _localAuth.isDeviceSupported()) {
|
|
biometricsOptions.onBiometricsError?.call();
|
|
return;
|
|
}
|
|
var didAuthenticate = await _localAuth.authenticate(
|
|
localizedReason: loginOptions.translations.biometricsLoginMessage,
|
|
options: AuthenticationOptions(
|
|
biometricOnly: !biometricsOptions.allowBiometricsAlternative,
|
|
stickyAuth: true,
|
|
sensitiveTransaction: false,
|
|
),
|
|
);
|
|
if (didAuthenticate) {
|
|
biometricsOptions.onBiometricsSuccess?.call();
|
|
}
|
|
|
|
if (!didAuthenticate) {
|
|
biometricsOptions.onBiometricsFail?.call();
|
|
}
|
|
} on PlatformException catch (_) {
|
|
biometricsOptions.onBiometricsError?.call();
|
|
}
|
|
}
|
|
}
|