Ask camera permission if not granted in Scanner Dialog

This commit is contained in:
Thomas Fransolet 2023-03-22 15:51:48 +01:00
parent 796cd72ef6
commit 72ce2a47f3
2 changed files with 34 additions and 5 deletions

View File

@ -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<ScannerDialog> {
QRViewController? controller;
final GlobalKey qrKey = GlobalKey(debugLabel: 'QR');
@override
Future<void> initState() async {
super.initState();
var status = await Permission.camera.status;
if(!status.isGranted) {
// You can request multiple permissions at once.
Map<Permission, PermissionStatus> 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<ScannerDialog> {
});
}
void _onPermissionSet(BuildContext context, QRViewController ctrl, bool p) {
Future<void> _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<Permission, PermissionStatus> statuses = await [
Permission.camera,
].request();
print(statuses[Permission.camera]);
print(status);
}
}
}

View File

@ -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);