finished qr scanner (test)

This commit is contained in:
Kima 2024-11-13 20:25:13 +01:00
parent 986b13de68
commit 3708b917c4
3 changed files with 50 additions and 5 deletions

View File

@ -59,8 +59,8 @@ Future<void> syncAll(BuildContext context) {
tasks = [
// refresh login
syncStatus(() async {
// print(user.user?.accessTokenExpire);
// print('${user.user?.accessToken ?? "no token"} - ACCESS TOKEN');
print(user.user?.accessTokenExpire);
print('${user.user?.accessToken ?? "no token"} - ACCESS TOKEN');
if (user.user == null) return;
if (user.user!.accessTokenExpire.isBefore(DateTime.now())) {

View File

@ -132,6 +132,9 @@ extension SettingsLocalization on String {
"other": "Other",
"stickermap": "Sticker Map",
"qr_scanner": "QR Scanner",
"camera_perm_error":
"Camera permission is required to scan QR codes.",
"invalid_qr_code": "Invalid QR code!",
},
"hu_hu": {
"heads_up": "Figyelem!",
@ -262,6 +265,9 @@ extension SettingsLocalization on String {
"other": "Egyéb",
"stickermap": "Matrica térkép",
"qr_scanner": "QR Kódolvasó",
"camera_perm_error":
"A kamera engedély szükséges a QR kódok beolvasásához.",
"invalid_qr_code": "Érvénytelen QR kód!",
},
"de_de": {
"heads_up": "Achtung!",
@ -392,6 +398,9 @@ extension SettingsLocalization on String {
"other": "Sonstiges",
"stickermap": "Sticker Map",
"qr_scanner": "QR-Scanner",
"camera_perm_error":
"Kameraberechtigung ist erforderlich, um QR-Codes zu scannen.",
"invalid_qr_code": "Ungültiger QR-Code!",
},
};

View File

@ -3,7 +3,10 @@ import 'dart:io';
import 'package:flutter/material.dart';
import 'package:flutter_feather_icons/flutter_feather_icons.dart';
import 'package:qr_code_scanner_plus/qr_code_scanner_plus.dart';
import 'package:refilc/theme/colors/colors.dart';
import 'package:refilc_mobile_ui/common/custom_snack_bar.dart';
import 'package:refilc_mobile_ui/screens/settings/settings_screen.i18n.dart';
import 'package:url_launcher/url_launcher.dart';
class CodeScannerScreen extends StatefulWidget {
const CodeScannerScreen({super.key});
@ -113,18 +116,51 @@ class _CodeScannerScreenState extends State<CodeScannerScreen> {
this.controller = controller;
});
controller.scannedDataStream.listen((scanData) {
controller.pauseCamera();
setState(() {
result = scanData;
});
Navigator.of(context).pop();
if (scanData.code != null) {
if (scanData.code!.startsWith('qw://')) {
// String data = scanData.code!.replaceFirst('qw://', '');
// check the qr id from api
// TODO: this qr shit
} else if (scanData.code!.startsWith('https://') ||
scanData.code!.startsWith('http://')) {
Uri uri = Uri.parse(scanData.code!.replaceFirst('http', 'https'));
if (uri.host.contains('refilc.hu') ||
uri.host.contains('refilcapp.hu') ||
uri.host.contains('filc.one')) {
launchUrl(uri, mode: LaunchMode.inAppBrowserView);
} else {
ScaffoldMessenger.of(context).showSnackBar(CustomSnackBar(
content: Text("invalid_qr_code".i18n,
style: const TextStyle(color: Colors.white)),
backgroundColor: AppColors.of(context).red,
context: context,
));
}
}
// log(scanData.code);
// Provider.of<SyncProvider>(context, listen: false).syncAll(context);
}
});
}
void _onPermissionSet(BuildContext context, QRViewController ctrl, bool p) {
// log('${DateTime.now().toIso8601String()}_onPermissionSet $p');
if (!p) {
ScaffoldMessenger.of(context).showSnackBar(
const SnackBar(content: Text('no Permission')),
);
ScaffoldMessenger.of(context).showSnackBar(CustomSnackBar(
content: Text("camera_perm_error".i18n,
style: const TextStyle(color: Colors.white)),
backgroundColor: AppColors.of(context).red,
context: context,
));
}
}