Biometric bypass on login: if enabled+registered, prompt fingerprint on open -> on success skip email/password. On fail, show grey msg and allow manual login via Masuk button
This commit is contained in:
@@ -20,6 +20,7 @@ class _AuthScreenState extends State<AuthScreen> {
|
||||
bool _isLogin = true;
|
||||
bool _busy = false;
|
||||
String? _error;
|
||||
String? _bioMsg;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
@@ -53,8 +54,12 @@ class _AuthScreenState extends State<AuthScreen> {
|
||||
if (ok) {
|
||||
final email = await widget.auth.getEmail() ?? '';
|
||||
_goToDashboard(email);
|
||||
} else {
|
||||
// fingerprint failed/cancelled -> let user login manually
|
||||
setState(() {
|
||||
_bioMsg = 'Gagal verifikasi sidik jari. Silakan masuk manual.';
|
||||
});
|
||||
}
|
||||
// on failure, the auth screen stays; user can tap Masuk manually
|
||||
}
|
||||
|
||||
/// On open: if a valid session is present, go straight to Dashboard.
|
||||
@@ -140,6 +145,12 @@ class _AuthScreenState extends State<AuthScreen> {
|
||||
const SizedBox(height: 8),
|
||||
if (_error != null)
|
||||
Text(_error!, style: const TextStyle(color: Colors.red)),
|
||||
if (_bioMsg != null)
|
||||
Padding(
|
||||
padding: const EdgeInsets.only(bottom: 8),
|
||||
child: Text(_bioMsg!,
|
||||
style: const TextStyle(color: Colors.grey)),
|
||||
),
|
||||
const SizedBox(height: 12),
|
||||
_busy
|
||||
? const CircularProgressIndicator()
|
||||
|
||||
Reference in New Issue
Block a user