Skip to content

Commit

Permalink
returning qr scanner value on pop()
Browse files Browse the repository at this point in the history
  • Loading branch information
oriventi committed Apr 24, 2024
1 parent 4ce4d9d commit a564e3b
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 15 deletions.
2 changes: 2 additions & 0 deletions duo_client/lib/main.dart
Original file line number Diff line number Diff line change
Expand Up @@ -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';
Expand Down Expand Up @@ -71,6 +72,7 @@ class _DuoAppState extends ConsumerState<DuoApp> {
}
},
),
QrCodeScanner.route: (context) => const QrCodeScanner(),
HomeScreen.route: (context) => const HomeScreen(),
LobbyScreen.route: (context) => const LobbyScreen(),
},
Expand Down
22 changes: 7 additions & 15 deletions duo_client/lib/screens/qr_scanner_screen.dart
Original file line number Diff line number Diff line change
@@ -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<QrCodeScanner> createState() => _QrCodeScannerState();
Expand All @@ -20,12 +20,6 @@ class _QrCodeScannerState extends State<QrCodeScanner>
Color borderColor = Colors.white;
bool _isLoading = false;

@override
void initState() {
// TODO: implement initState
super.initState();
}

@override
void dispose() {
_controller.dispose();
Expand Down Expand Up @@ -60,8 +54,7 @@ class _QrCodeScannerState extends State<QrCodeScanner>
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),
),
),
],
Expand All @@ -71,7 +64,7 @@ class _QrCodeScannerState extends State<QrCodeScanner>

Future<void> 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;
Expand All @@ -82,7 +75,7 @@ class _QrCodeScannerState extends State<QrCodeScanner>

Future<void> 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;
Expand Down Expand Up @@ -110,7 +103,7 @@ class _QrCodeScannerState extends State<QrCodeScanner>
}

(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) {
Expand All @@ -126,9 +119,8 @@ class _QrCodeScannerState extends State<QrCodeScanner>
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();
Expand Down

0 comments on commit a564e3b

Please sign in to comment.