mirror of
https://github.com/Iconica-Development/flutter_login_widget.git
synced 2025-05-19 13:43:44 +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();
|
||
|
}
|
||
|
}
|
||
|
}
|