test
This commit is contained in:
@@ -1,15 +1,15 @@
|
||||
import 'package:dartx/dartx.dart';
|
||||
import 'package:fluentui_system_icons/fluentui_system_icons.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_easy_permission/easy_permissions.dart';
|
||||
// import 'package:flutter_easy_permission/easy_permissions.dart';
|
||||
import 'package:hiddify/core/localization/translations.dart';
|
||||
import 'package:hiddify/utils/utils.dart';
|
||||
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
||||
import 'package:mobile_scanner/mobile_scanner.dart';
|
||||
// import 'package:permission_handler/permission_handler.dart';
|
||||
|
||||
const permissions = [Permissions.CAMERA];
|
||||
const permissionGroup = [PermissionGroup.Camera];
|
||||
// const permissions = [Permissions.CAMERA];
|
||||
// const permissionGroup = [PermissionGroup.Camera];
|
||||
|
||||
class QRCodeScannerScreen extends StatefulHookConsumerWidget {
|
||||
const QRCodeScannerScreen({super.key});
|
||||
@@ -24,62 +24,59 @@ class QRCodeScannerScreen extends StatefulHookConsumerWidget {
|
||||
}
|
||||
|
||||
@override
|
||||
ConsumerState<QRCodeScannerScreen> createState() =>
|
||||
_QRCodeScannerScreenState();
|
||||
ConsumerState<QRCodeScannerScreen> createState() => _QRCodeScannerScreenState();
|
||||
}
|
||||
|
||||
class _QRCodeScannerScreenState extends ConsumerState<QRCodeScannerScreen>
|
||||
with WidgetsBindingObserver, PresLogger {
|
||||
final controller =
|
||||
MobileScannerController(detectionTimeoutMs: 500, autoStart: false);
|
||||
class _QRCodeScannerScreenState extends ConsumerState<QRCodeScannerScreen> with WidgetsBindingObserver, PresLogger {
|
||||
final controller = MobileScannerController(detectionTimeoutMs: 500, autoStart: false);
|
||||
bool started = false;
|
||||
|
||||
late FlutterEasyPermission _easyPermission;
|
||||
// late FlutterEasyPermission _easyPermission;
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
WidgetsBinding.instance.addObserver(this);
|
||||
|
||||
_easyPermission = FlutterEasyPermission()
|
||||
..addPermissionCallback(onGranted: (requestCode, androidPerms, iosPerm) {
|
||||
debugPrint("android:$androidPerms");
|
||||
debugPrint("iOS:$iosPerm");
|
||||
startQrScannerIfPermissionGranted();
|
||||
}, onDenied: (requestCode, androidPerms, iosPerm, isPermanent) {
|
||||
if (isPermanent) {
|
||||
FlutterEasyPermission.showAppSettingsDialog(title: "Camera");
|
||||
} else {
|
||||
debugPrint("android:$androidPerms");
|
||||
debugPrint("iOS:$iosPerm");
|
||||
}
|
||||
}, onSettingsReturned: () {
|
||||
startQrScannerIfPermissionGranted();
|
||||
});
|
||||
// _easyPermission = FlutterEasyPermission()
|
||||
// ..addPermissionCallback(onGranted: (requestCode, androidPerms, iosPerm) {
|
||||
// debugPrint("android:$androidPerms");
|
||||
// debugPrint("iOS:$iosPerm");
|
||||
// startQrScannerIfPermissionGranted();
|
||||
// }, onDenied: (requestCode, androidPerms, iosPerm, isPermanent) {
|
||||
// if (isPermanent) {
|
||||
// FlutterEasyPermission.showAppSettingsDialog(title: "Camera");
|
||||
// } else {
|
||||
// debugPrint("android:$androidPerms");
|
||||
// debugPrint("iOS:$iosPerm");
|
||||
// }
|
||||
// }, onSettingsReturned: () {
|
||||
// startQrScannerIfPermissionGranted();
|
||||
// });
|
||||
}
|
||||
|
||||
@override
|
||||
void dispose() {
|
||||
controller.stop();
|
||||
_easyPermission.dispose();
|
||||
// _easyPermission.dispose();
|
||||
WidgetsBinding.instance.removeObserver(this);
|
||||
super.dispose();
|
||||
}
|
||||
|
||||
void startQrScannerIfPermissionGranted() {
|
||||
FlutterEasyPermission.has(perms: permissions, permsGroup: permissionGroup)
|
||||
.then((value) {
|
||||
if (value) {
|
||||
controller.start().then((result) {
|
||||
if (result != null) {
|
||||
setState(() {
|
||||
started = true;
|
||||
});
|
||||
}
|
||||
}).catchError((error) {
|
||||
loggy.warning("Error starting scanner: $error");
|
||||
});
|
||||
} else {}
|
||||
});
|
||||
// FlutterEasyPermission.has(perms: permissions, permsGroup: permissionGroup)
|
||||
// .then((value) {
|
||||
// if (value) {
|
||||
// controller.start().then((result) {
|
||||
// if (result != null) {
|
||||
// setState(() {
|
||||
// started = true;
|
||||
// });
|
||||
// }
|
||||
// }).catchError((error) {
|
||||
// loggy.warning("Error starting scanner: $error");
|
||||
// });
|
||||
// } else {}
|
||||
// });
|
||||
}
|
||||
|
||||
@override
|
||||
@@ -139,8 +136,7 @@ class _QRCodeScannerScreenState extends ConsumerState<QRCodeScannerScreen>
|
||||
final uri = Uri.tryParse(rawData);
|
||||
if (context.mounted && uri != null) {
|
||||
loggy.debug('captured url: [$uri]');
|
||||
Navigator.of(context, rootNavigator: true)
|
||||
.pop(uri.toString());
|
||||
Navigator.of(context, rootNavigator: true).pop(uri.toString());
|
||||
}
|
||||
} else {
|
||||
loggy.warning("unable to capture");
|
||||
@@ -148,8 +144,7 @@ class _QRCodeScannerScreenState extends ConsumerState<QRCodeScannerScreen>
|
||||
},
|
||||
errorBuilder: (_, error, __) {
|
||||
final message = switch (error.errorCode) {
|
||||
MobileScannerErrorCode.permissionDenied =>
|
||||
t.profile.add.qrScanner.permissionDeniedError,
|
||||
MobileScannerErrorCode.permissionDenied => t.profile.add.qrScanner.permissionDeniedError,
|
||||
_ => t.profile.add.qrScanner.unexpectedError,
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user