diff --git a/duo_client/lib/main.dart b/duo_client/lib/main.dart index c1d20c6..ccd4c01 100644 --- a/duo_client/lib/main.dart +++ b/duo_client/lib/main.dart @@ -2,6 +2,7 @@ import 'package:duo_client/provider/api_provider.dart'; import 'package:duo_client/provider/storage_provider.dart'; import 'package:duo_client/screens/home_screen.dart'; import 'package:duo_client/screens/lobby_screen.dart'; +import 'package:duo_client/screens/qr_scanner_screen.dart'; import 'package:duo_client/screens/splash_screen.dart'; import 'package:duo_client/utils/constants.dart'; import 'package:duo_client/widgets/get_user_dialog.dart'; @@ -71,6 +72,7 @@ class _DuoAppState extends ConsumerState { } }, ), + QrCodeScanner.route: (context) => const QrCodeScanner(), HomeScreen.route: (context) => const HomeScreen(), LobbyScreen.route: (context) => const LobbyScreen(), }, diff --git a/duo_client/lib/screens/qr_scanner_screen.dart b/duo_client/lib/screens/qr_scanner_screen.dart index d188a9c..03823fc 100644 --- a/duo_client/lib/screens/qr_scanner_screen.dart +++ b/duo_client/lib/screens/qr_scanner_screen.dart @@ -1,13 +1,13 @@ import 'dart:async'; +import 'package:duo_client/utils/constants.dart'; import 'package:flutter/material.dart'; import 'package:mobile_scanner/mobile_scanner.dart'; import 'package:qr_scanner_overlay/qr_scanner_overlay.dart'; class QrCodeScanner extends StatefulWidget { static const route = '/qr-code-scanner'; - final void Function(int id) onDetectedValid; - const QrCodeScanner({required this.onDetectedValid, super.key}); + const QrCodeScanner({super.key}); @override State createState() => _QrCodeScannerState(); @@ -20,12 +20,6 @@ class _QrCodeScannerState extends State Color borderColor = Colors.white; bool _isLoading = false; - @override - void initState() { - // TODO: implement initState - super.initState(); - } - @override void dispose() { _controller.dispose(); @@ -60,8 +54,7 @@ class _QrCodeScannerState extends State Navigator.of(context).pop(); } }, - icon: const Icon(Icons.close, - color: Colors.white), //TODO change to close icon + icon: const Icon(Icons.close, color: Colors.white), ), ), ], @@ -71,7 +64,7 @@ class _QrCodeScannerState extends State Future setInvalidColor() async { setState(() { - borderColor = Colors.red.withOpacity(0.4); + borderColor = Constants.errorColor.withOpacity(0.4); }); await Future.delayed(const Duration(milliseconds: 500)); if (!mounted) return; @@ -82,7 +75,7 @@ class _QrCodeScannerState extends State Future setValidColor() async { setState(() { - borderColor = Colors.green.withOpacity(0.4); + borderColor = Constants.successColor.withOpacity(0.4); }); await Future.delayed(const Duration(milliseconds: 500)); if (!mounted) return; @@ -110,7 +103,7 @@ class _QrCodeScannerState extends State } (bool isValid, int id) _validateQrData(String data) { - //has the form of id:$id;pin:$pin + //has the form of id:$id final int id = int.tryParse(data.split(':')[1]) ?? -1; if (id < 0) { @@ -126,9 +119,8 @@ class _QrCodeScannerState extends State if (isQrValid) { await setValidColor(); if (!mounted) return; - widget.onDetectedValid(id); if (Navigator.of(context).canPop()) { - Navigator.of(context).pop(); + Navigator.of(context).pop(id); } } else { if (borderColor == Colors.white) await setInvalidColor();