diff --git a/userfront/lib/features/auth/presentation/qr_scan_route.dart b/userfront/lib/features/auth/presentation/qr_scan_route.dart index b69c7905..2f20393d 100644 --- a/userfront/lib/features/auth/presentation/qr_scan_route.dart +++ b/userfront/lib/features/auth/presentation/qr_scan_route.dart @@ -15,3 +15,14 @@ String buildQrApprovePath( ); return '/$resolvedLocale/approve?ref=${Uri.encodeQueryComponent(value)}'; } + +String buildQrBackFallbackPath({String? localeCode, Uri? currentUri}) { + final explicitLocale = localeCode?.trim(); + final uri = currentUri ?? Uri.base; + final resolvedLocale = explicitLocale != null && explicitLocale.isNotEmpty + ? explicitLocale.toLowerCase().replaceAll('_', '-') + : normalizeLocaleCode( + extractLocaleFromPath(uri) ?? resolvePreferredLocaleCode(), + ); + return '/$resolvedLocale/dashboard'; +} diff --git a/userfront/lib/features/auth/presentation/qr_scan_screen_stub.dart b/userfront/lib/features/auth/presentation/qr_scan_screen_stub.dart index 7f6b77d2..cd524661 100644 --- a/userfront/lib/features/auth/presentation/qr_scan_screen_stub.dart +++ b/userfront/lib/features/auth/presentation/qr_scan_screen_stub.dart @@ -38,6 +38,15 @@ class _QRScanScreenState extends State { context.go(buildQrApprovePath(raw)); } + void _handleBack() { + final router = GoRouter.of(context); + if (router.canPop()) { + router.pop(); + return; + } + router.go(buildQrBackFallbackPath()); + } + @override Widget build(BuildContext context) { return Scaffold( @@ -45,7 +54,7 @@ class _QRScanScreenState extends State { title: Text(tr('ui.userfront.qr.title', fallback: 'Scan QR Code')), leading: IconButton( icon: const Icon(Icons.arrow_back), - onPressed: () => context.pop(), + onPressed: _handleBack, ), ), body: Padding( diff --git a/userfront/lib/features/auth/presentation/qr_scan_screen_web.dart b/userfront/lib/features/auth/presentation/qr_scan_screen_web.dart index c3e5291e..ea07d07b 100644 --- a/userfront/lib/features/auth/presentation/qr_scan_screen_web.dart +++ b/userfront/lib/features/auth/presentation/qr_scan_screen_web.dart @@ -131,6 +131,15 @@ class _QRScanScreenState extends State { } } + void _handleBack() { + final router = GoRouter.of(context); + if (router.canPop()) { + router.pop(); + return; + } + router.go(buildQrBackFallbackPath()); + } + @override Widget build(BuildContext context) { return Scaffold( @@ -138,7 +147,7 @@ class _QRScanScreenState extends State { title: Text(tr('ui.userfront.qr.title', fallback: 'Scan QR Code')), leading: IconButton( icon: const Icon(Icons.arrow_back), - onPressed: () => context.pop(), + onPressed: _handleBack, ), ), body: Padding(