flutter_login_widget/lib/src/service/local_auth_service.dart
2025-04-17 08:49:20 +02:00

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();
}
}
}