test
This commit is contained in:
@@ -41,7 +41,8 @@ if (flutterVersionName == null) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
android {
|
android {
|
||||||
namespace "com.hiddify.hiddify"
|
namespace 'com.hiddify.hiddify'
|
||||||
|
testNamespace "test.com.hiddify.hiddify"
|
||||||
compileSdkVersion 34
|
compileSdkVersion 34
|
||||||
ndkVersion "26.1.10909125"
|
ndkVersion "26.1.10909125"
|
||||||
|
|
||||||
|
|||||||
@@ -16,3 +16,4 @@ subprojects {
|
|||||||
tasks.register("clean", Delete) {
|
tasks.register("clean", Delete) {
|
||||||
delete rootProject.buildDir
|
delete rootProject.buildDir
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -18,8 +18,8 @@ pluginManagement {
|
|||||||
|
|
||||||
plugins {
|
plugins {
|
||||||
id "dev.flutter.flutter-plugin-loader" version "1.0.0"
|
id "dev.flutter.flutter-plugin-loader" version "1.0.0"
|
||||||
id "com.android.application" version "7.4.2" apply false
|
id "com.android.application" version "8.0.0" apply false
|
||||||
id "org.jetbrains.kotlin.android" version "1.8.21" apply false
|
id "org.jetbrains.kotlin.android" version "1.8.0" apply false
|
||||||
}
|
}
|
||||||
|
|
||||||
include ":app"
|
include ":app"
|
||||||
|
|||||||
@@ -1,15 +1,15 @@
|
|||||||
import 'package:dartx/dartx.dart';
|
import 'package:dartx/dartx.dart';
|
||||||
import 'package:fluentui_system_icons/fluentui_system_icons.dart';
|
import 'package:fluentui_system_icons/fluentui_system_icons.dart';
|
||||||
import 'package:flutter/material.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/core/localization/translations.dart';
|
||||||
import 'package:hiddify/utils/utils.dart';
|
import 'package:hiddify/utils/utils.dart';
|
||||||
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
||||||
import 'package:mobile_scanner/mobile_scanner.dart';
|
import 'package:mobile_scanner/mobile_scanner.dart';
|
||||||
// import 'package:permission_handler/permission_handler.dart';
|
// import 'package:permission_handler/permission_handler.dart';
|
||||||
|
|
||||||
const permissions = [Permissions.CAMERA];
|
// const permissions = [Permissions.CAMERA];
|
||||||
const permissionGroup = [PermissionGroup.Camera];
|
// const permissionGroup = [PermissionGroup.Camera];
|
||||||
|
|
||||||
class QRCodeScannerScreen extends StatefulHookConsumerWidget {
|
class QRCodeScannerScreen extends StatefulHookConsumerWidget {
|
||||||
const QRCodeScannerScreen({super.key});
|
const QRCodeScannerScreen({super.key});
|
||||||
@@ -24,62 +24,59 @@ class QRCodeScannerScreen extends StatefulHookConsumerWidget {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
ConsumerState<QRCodeScannerScreen> createState() =>
|
ConsumerState<QRCodeScannerScreen> createState() => _QRCodeScannerScreenState();
|
||||||
_QRCodeScannerScreenState();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
class _QRCodeScannerScreenState extends ConsumerState<QRCodeScannerScreen>
|
class _QRCodeScannerScreenState extends ConsumerState<QRCodeScannerScreen> with WidgetsBindingObserver, PresLogger {
|
||||||
with WidgetsBindingObserver, PresLogger {
|
final controller = MobileScannerController(detectionTimeoutMs: 500, autoStart: false);
|
||||||
final controller =
|
|
||||||
MobileScannerController(detectionTimeoutMs: 500, autoStart: false);
|
|
||||||
bool started = false;
|
bool started = false;
|
||||||
|
|
||||||
late FlutterEasyPermission _easyPermission;
|
// late FlutterEasyPermission _easyPermission;
|
||||||
@override
|
@override
|
||||||
void initState() {
|
void initState() {
|
||||||
super.initState();
|
super.initState();
|
||||||
WidgetsBinding.instance.addObserver(this);
|
WidgetsBinding.instance.addObserver(this);
|
||||||
|
|
||||||
_easyPermission = FlutterEasyPermission()
|
// _easyPermission = FlutterEasyPermission()
|
||||||
..addPermissionCallback(onGranted: (requestCode, androidPerms, iosPerm) {
|
// ..addPermissionCallback(onGranted: (requestCode, androidPerms, iosPerm) {
|
||||||
debugPrint("android:$androidPerms");
|
// debugPrint("android:$androidPerms");
|
||||||
debugPrint("iOS:$iosPerm");
|
// debugPrint("iOS:$iosPerm");
|
||||||
startQrScannerIfPermissionGranted();
|
// startQrScannerIfPermissionGranted();
|
||||||
}, onDenied: (requestCode, androidPerms, iosPerm, isPermanent) {
|
// }, onDenied: (requestCode, androidPerms, iosPerm, isPermanent) {
|
||||||
if (isPermanent) {
|
// if (isPermanent) {
|
||||||
FlutterEasyPermission.showAppSettingsDialog(title: "Camera");
|
// FlutterEasyPermission.showAppSettingsDialog(title: "Camera");
|
||||||
} else {
|
// } else {
|
||||||
debugPrint("android:$androidPerms");
|
// debugPrint("android:$androidPerms");
|
||||||
debugPrint("iOS:$iosPerm");
|
// debugPrint("iOS:$iosPerm");
|
||||||
}
|
// }
|
||||||
}, onSettingsReturned: () {
|
// }, onSettingsReturned: () {
|
||||||
startQrScannerIfPermissionGranted();
|
// startQrScannerIfPermissionGranted();
|
||||||
});
|
// });
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void dispose() {
|
void dispose() {
|
||||||
controller.stop();
|
controller.stop();
|
||||||
_easyPermission.dispose();
|
// _easyPermission.dispose();
|
||||||
WidgetsBinding.instance.removeObserver(this);
|
WidgetsBinding.instance.removeObserver(this);
|
||||||
super.dispose();
|
super.dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
void startQrScannerIfPermissionGranted() {
|
void startQrScannerIfPermissionGranted() {
|
||||||
FlutterEasyPermission.has(perms: permissions, permsGroup: permissionGroup)
|
// FlutterEasyPermission.has(perms: permissions, permsGroup: permissionGroup)
|
||||||
.then((value) {
|
// .then((value) {
|
||||||
if (value) {
|
// if (value) {
|
||||||
controller.start().then((result) {
|
// controller.start().then((result) {
|
||||||
if (result != null) {
|
// if (result != null) {
|
||||||
setState(() {
|
// setState(() {
|
||||||
started = true;
|
// started = true;
|
||||||
});
|
// });
|
||||||
}
|
// }
|
||||||
}).catchError((error) {
|
// }).catchError((error) {
|
||||||
loggy.warning("Error starting scanner: $error");
|
// loggy.warning("Error starting scanner: $error");
|
||||||
});
|
// });
|
||||||
} else {}
|
// } else {}
|
||||||
});
|
// });
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@@ -139,8 +136,7 @@ class _QRCodeScannerScreenState extends ConsumerState<QRCodeScannerScreen>
|
|||||||
final uri = Uri.tryParse(rawData);
|
final uri = Uri.tryParse(rawData);
|
||||||
if (context.mounted && uri != null) {
|
if (context.mounted && uri != null) {
|
||||||
loggy.debug('captured url: [$uri]');
|
loggy.debug('captured url: [$uri]');
|
||||||
Navigator.of(context, rootNavigator: true)
|
Navigator.of(context, rootNavigator: true).pop(uri.toString());
|
||||||
.pop(uri.toString());
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
loggy.warning("unable to capture");
|
loggy.warning("unable to capture");
|
||||||
@@ -148,8 +144,7 @@ class _QRCodeScannerScreenState extends ConsumerState<QRCodeScannerScreen>
|
|||||||
},
|
},
|
||||||
errorBuilder: (_, error, __) {
|
errorBuilder: (_, error, __) {
|
||||||
final message = switch (error.errorCode) {
|
final message = switch (error.errorCode) {
|
||||||
MobileScannerErrorCode.permissionDenied =>
|
MobileScannerErrorCode.permissionDenied => t.profile.add.qrScanner.permissionDeniedError,
|
||||||
t.profile.add.qrScanner.permissionDeniedError,
|
|
||||||
_ => t.profile.add.qrScanner.unexpectedError,
|
_ => t.profile.add.qrScanner.unexpectedError,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -487,14 +487,6 @@ packages:
|
|||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.6.0"
|
version: "0.6.0"
|
||||||
flutter_easy_permission:
|
|
||||||
dependency: "direct main"
|
|
||||||
description:
|
|
||||||
name: flutter_easy_permission
|
|
||||||
sha256: "05eb1b561c894adef28b3ae38d8087fc2635f1047c5e18cf2698fb42b6ccc132"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "1.1.2"
|
|
||||||
flutter_gen_core:
|
flutter_gen_core:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
|||||||
@@ -81,7 +81,7 @@ dependencies:
|
|||||||
timezone_to_country: ^2.1.0
|
timezone_to_country: ^2.1.0
|
||||||
json_path: ^0.7.1
|
json_path: ^0.7.1
|
||||||
# permission_handler: ^11.3.0 # is not compatible with windows
|
# permission_handler: ^11.3.0 # is not compatible with windows
|
||||||
flutter_easy_permission: ^1.1.2
|
# flutter_easy_permission: ^1.1.2
|
||||||
in_app_review: ^2.0.9
|
in_app_review: ^2.0.9
|
||||||
# circle_flags: ^4.0.2
|
# circle_flags: ^4.0.2
|
||||||
circle_flags:
|
circle_flags:
|
||||||
|
|||||||
Reference in New Issue
Block a user