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

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