42 lines
1.1 KiB
Dart
42 lines
1.1 KiB
Dart
import 'package:local_auth/local_auth.dart';
|
|
|
|
/// Authentication service for biometrics
|
|
class AuthService {
|
|
final LocalAuthentication _localAuth = LocalAuthentication();
|
|
|
|
/// Check if biometrics are available
|
|
Future<bool> isBiometricsAvailable() async {
|
|
try {
|
|
final canCheckBiometrics = await _localAuth.canCheckBiometrics;
|
|
final isDeviceSupported = await _localAuth.isDeviceSupported();
|
|
return canCheckBiometrics && isDeviceSupported;
|
|
} catch (e) {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
/// Authenticate using biometrics
|
|
Future<bool> authenticate({String reason = 'Please authenticate to continue'}) async {
|
|
try {
|
|
return await _localAuth.authenticate(
|
|
localizedReason: reason,
|
|
options: const AuthenticationOptions(
|
|
stickyAuth: true,
|
|
biometricOnly: false,
|
|
),
|
|
);
|
|
} catch (e) {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
/// Get available biometric types
|
|
Future<List<BiometricType>> getAvailableBiometrics() async {
|
|
try {
|
|
return await _localAuth.getAvailableBiometrics();
|
|
} catch (e) {
|
|
return [];
|
|
}
|
|
}
|
|
}
|