From 72ce2a47f3aa538567c789f55a444b700b25f7f5 Mon Sep 17 00:00:00 2001 From: Thomas Fransolet Date: Wed, 22 Mar 2023 15:51:48 +0100 Subject: [PATCH] Ask camera permission if not granted in Scanner Dialog --- lib/Components/ScannerDialog.dart | 37 +++++++++++++++++++++++++++---- lib/constants.dart | 2 +- 2 files changed, 34 insertions(+), 5 deletions(-) diff --git a/lib/Components/ScannerDialog.dart b/lib/Components/ScannerDialog.dart index ee15ff6..772c5ad 100644 --- a/lib/Components/ScannerDialog.dart +++ b/lib/Components/ScannerDialog.dart @@ -8,6 +8,7 @@ import 'package:mymuseum_visitapp/Screens/Article/article_page.dart'; import 'package:mymuseum_visitapp/Screens/Quizz/quizz_page.dart'; import 'package:mymuseum_visitapp/app_context.dart'; import 'package:mymuseum_visitapp/constants.dart'; +import 'package:permission_handler/permission_handler.dart'; import 'package:qr_code_scanner/qr_code_scanner.dart'; @@ -25,6 +26,22 @@ class _ScannerDialogState extends State { QRViewController? controller; final GlobalKey qrKey = GlobalKey(debugLabel: 'QR'); + @override + Future initState() async { + super.initState(); + + var status = await Permission.camera.status; + + if(!status.isGranted) { + // You can request multiple permissions at once. + Map statuses = await [ + Permission.camera, + ].request(); + print(statuses[Permission.camera]); + print(status); + } + } + // In order to get hot reload to work we need to pause the camera if the platform // is android, or resume the camera if the platform is iOS. @override @@ -183,12 +200,24 @@ class _ScannerDialogState extends State { }); } - void _onPermissionSet(BuildContext context, QRViewController ctrl, bool p) { + Future _onPermissionSet(BuildContext context, QRViewController ctrl, bool p) async { //log('${DateTime.now().toIso8601String()}_onPermissionSet $p'); if (!p) { - ScaffoldMessenger.of(context).showSnackBar( - const SnackBar(content: Text('no Permission')), - ); + + var status = await Permission.camera.status; + + if(!status.isGranted) { + ScaffoldMessenger.of(context).showSnackBar( + const SnackBar(content: Text('no Permission')), + ); + + // You can request multiple permissions at once. + Map statuses = await [ + Permission.camera, + ].request(); + print(statuses[Permission.camera]); + print(status); + } } } diff --git a/lib/constants.dart b/lib/constants.dart index 2c77c1a..51c2a18 100644 --- a/lib/constants.dart +++ b/lib/constants.dart @@ -1,6 +1,6 @@ import 'package:flutter/material.dart'; -// Colors - TO FILL WIT CORRECT COLOR +// Colors - TO FILL WITH CORRECT COLOR const kBackgroundColor = Color(0xFFFFFFFF); const kMainColor = Color(0xFF306bac); const kSecondColor = Color(0xFF309cb0);