diff --git a/.flutter-plugins b/.flutter-plugins deleted file mode 100644 index e879431..0000000 --- a/.flutter-plugins +++ /dev/null @@ -1,13 +0,0 @@ -# This is a generated file; do not edit or check into version control. -audio_session=/Users/kiwixdevteam/Documents/flutter/.pub-cache/hosted/pub.dartlang.org/audio_session-0.1.13/ -flutter_beacon=/Users/kiwixdevteam/Documents/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_beacon-0.5.1/ -just_audio=/Users/kiwixdevteam/Documents/flutter/.pub-cache/hosted/pub.dartlang.org/just_audio-0.9.31/ -just_audio_web=/Users/kiwixdevteam/Documents/flutter/.pub-cache/hosted/pub.dartlang.org/just_audio_web-0.4.7/ -path_provider=/Users/kiwixdevteam/Documents/flutter/.pub-cache/hosted/pub.dartlang.org/path_provider-2.0.12/ -path_provider_android=/Users/kiwixdevteam/Documents/flutter/.pub-cache/hosted/pub.dartlang.org/path_provider_android-2.0.22/ -path_provider_foundation=/Users/kiwixdevteam/Documents/flutter/.pub-cache/hosted/pub.dartlang.org/path_provider_foundation-2.1.1/ -path_provider_linux=/Users/kiwixdevteam/Documents/flutter/.pub-cache/hosted/pub.dartlang.org/path_provider_linux-2.1.8/ -path_provider_windows=/Users/kiwixdevteam/Documents/flutter/.pub-cache/hosted/pub.dartlang.org/path_provider_windows-2.1.3/ -permission_handler=/Users/kiwixdevteam/Documents/flutter/.pub-cache/hosted/pub.dartlang.org/permission_handler-8.3.0/ -qr_code_scanner=/Users/kiwixdevteam/Documents/flutter/.pub-cache/hosted/pub.dartlang.org/qr_code_scanner-1.0.1/ -sqflite=/Users/kiwixdevteam/Documents/flutter/.pub-cache/hosted/pub.dartlang.org/sqflite-2.2.4+1/ diff --git a/.flutter-plugins-dependencies b/.flutter-plugins-dependencies deleted file mode 100644 index a018587..0000000 --- a/.flutter-plugins-dependencies +++ /dev/null @@ -1 +0,0 @@ -{"info":"This is a generated file; do not edit or check into version control.","plugins":{"ios":[{"name":"audio_session","path":"/Users/kiwixdevteam/Documents/flutter/.pub-cache/hosted/pub.dartlang.org/audio_session-0.1.13/","native_build":true,"dependencies":[]},{"name":"flutter_beacon","path":"/Users/kiwixdevteam/Documents/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_beacon-0.5.1/","native_build":true,"dependencies":[]},{"name":"just_audio","path":"/Users/kiwixdevteam/Documents/flutter/.pub-cache/hosted/pub.dartlang.org/just_audio-0.9.31/","native_build":true,"dependencies":["audio_session"]},{"name":"path_provider_foundation","path":"/Users/kiwixdevteam/Documents/flutter/.pub-cache/hosted/pub.dartlang.org/path_provider_foundation-2.1.1/","native_build":true,"dependencies":[]},{"name":"permission_handler","path":"/Users/kiwixdevteam/Documents/flutter/.pub-cache/hosted/pub.dartlang.org/permission_handler-8.3.0/","native_build":true,"dependencies":[]},{"name":"qr_code_scanner","path":"/Users/kiwixdevteam/Documents/flutter/.pub-cache/hosted/pub.dartlang.org/qr_code_scanner-1.0.1/","native_build":true,"dependencies":[]},{"name":"sqflite","path":"/Users/kiwixdevteam/Documents/flutter/.pub-cache/hosted/pub.dartlang.org/sqflite-2.2.4+1/","native_build":true,"dependencies":[]}],"android":[{"name":"audio_session","path":"/Users/kiwixdevteam/Documents/flutter/.pub-cache/hosted/pub.dartlang.org/audio_session-0.1.13/","native_build":true,"dependencies":[]},{"name":"flutter_beacon","path":"/Users/kiwixdevteam/Documents/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_beacon-0.5.1/","native_build":true,"dependencies":[]},{"name":"just_audio","path":"/Users/kiwixdevteam/Documents/flutter/.pub-cache/hosted/pub.dartlang.org/just_audio-0.9.31/","native_build":true,"dependencies":["audio_session"]},{"name":"path_provider_android","path":"/Users/kiwixdevteam/Documents/flutter/.pub-cache/hosted/pub.dartlang.org/path_provider_android-2.0.22/","native_build":true,"dependencies":[]},{"name":"permission_handler","path":"/Users/kiwixdevteam/Documents/flutter/.pub-cache/hosted/pub.dartlang.org/permission_handler-8.3.0/","native_build":true,"dependencies":[]},{"name":"qr_code_scanner","path":"/Users/kiwixdevteam/Documents/flutter/.pub-cache/hosted/pub.dartlang.org/qr_code_scanner-1.0.1/","native_build":true,"dependencies":[]},{"name":"sqflite","path":"/Users/kiwixdevteam/Documents/flutter/.pub-cache/hosted/pub.dartlang.org/sqflite-2.2.4+1/","native_build":true,"dependencies":[]}],"macos":[{"name":"audio_session","path":"/Users/kiwixdevteam/Documents/flutter/.pub-cache/hosted/pub.dartlang.org/audio_session-0.1.13/","native_build":true,"dependencies":[]},{"name":"just_audio","path":"/Users/kiwixdevteam/Documents/flutter/.pub-cache/hosted/pub.dartlang.org/just_audio-0.9.31/","native_build":true,"dependencies":["audio_session"]},{"name":"path_provider_foundation","path":"/Users/kiwixdevteam/Documents/flutter/.pub-cache/hosted/pub.dartlang.org/path_provider_foundation-2.1.1/","native_build":true,"dependencies":[]},{"name":"sqflite","path":"/Users/kiwixdevteam/Documents/flutter/.pub-cache/hosted/pub.dartlang.org/sqflite-2.2.4+1/","native_build":true,"dependencies":[]}],"linux":[{"name":"path_provider_linux","path":"/Users/kiwixdevteam/Documents/flutter/.pub-cache/hosted/pub.dartlang.org/path_provider_linux-2.1.8/","native_build":false,"dependencies":[]}],"windows":[{"name":"path_provider_windows","path":"/Users/kiwixdevteam/Documents/flutter/.pub-cache/hosted/pub.dartlang.org/path_provider_windows-2.1.3/","native_build":false,"dependencies":[]}],"web":[{"name":"audio_session","path":"/Users/kiwixdevteam/Documents/flutter/.pub-cache/hosted/pub.dartlang.org/audio_session-0.1.13/","dependencies":[]},{"name":"just_audio_web","path":"/Users/kiwixdevteam/Documents/flutter/.pub-cache/hosted/pub.dartlang.org/just_audio_web-0.4.7/","dependencies":[]}]},"dependencyGraph":[{"name":"audio_session","dependencies":[]},{"name":"flutter_beacon","dependencies":[]},{"name":"just_audio","dependencies":["just_audio_web","audio_session","path_provider"]},{"name":"just_audio_web","dependencies":[]},{"name":"path_provider","dependencies":["path_provider_android","path_provider_foundation","path_provider_linux","path_provider_windows"]},{"name":"path_provider_android","dependencies":[]},{"name":"path_provider_foundation","dependencies":[]},{"name":"path_provider_linux","dependencies":[]},{"name":"path_provider_windows","dependencies":[]},{"name":"permission_handler","dependencies":[]},{"name":"qr_code_scanner","dependencies":[]},{"name":"sqflite","dependencies":[]}],"date_created":"2023-02-15 16:47:50.639440","version":"3.3.9"} \ No newline at end of file diff --git a/.gitignore b/.gitignore index 15f4ae3..616b217 100644 --- a/.gitignore +++ b/.gitignore @@ -50,3 +50,5 @@ Thumbs.db .dart_tool build +.flutter-plugins +.flutter-plugins-dependencies diff --git a/lib/Screens/Visit/visit.dart b/lib/Screens/Visit/visit.dart index 5a066fb..be4c5c4 100644 --- a/lib/Screens/Visit/visit.dart +++ b/lib/Screens/Visit/visit.dart @@ -47,13 +47,28 @@ class _VisitPageState extends State with WidgetsBindingObserver { DateTime? lastTimePopUpWasClosed; //bool _isArticleOpened = false; StreamSubscription? listener; + final List regions = []; @override void initState() { WidgetsBinding.instance.addObserver(this); + if (Platform.isIOS) { + // iOS platform, at least set identifier and proximityUUID for region scanning + regions.add(Region( + identifier: 'MyMuseumB', + proximityUUID: '01122334-4556-6778-899A-ABBCCDDEEFF0')); + } else { + // Android platform, it can ranging out of beacon that filter all of Proximity UUID + regions.add(Region(identifier: 'MyMuseumB')); + } + super.initState(); - listeningState(); + + if(controller.authorizationStatusOk) { + listeningState(); + } + //listeningState(); } listeningState() async { @@ -119,6 +134,7 @@ class _VisitPageState extends State with WidgetsBindingObserver { } initScanBeacon(VisitAppContext visitAppContext) async { + await flutterBeacon.initializeScanning; if (!controller.authorizationStatusOk || !controller.locationServiceEnabled || @@ -130,20 +146,6 @@ class _VisitPageState extends State with WidgetsBindingObserver { return; } - final regions = []; - - if (Platform.isIOS) { - // iOS platform, at least set identifier and proximityUUID for region scanning - regions.add(Region( - identifier: 'MyMuseumB', - proximityUUID: '01122334-4556-6778-899A-ABBCCDDEEFF0')); - } else { - // Android platform, it can ranging out of beacon that filter all of Proximity UUID - regions.add(Region(identifier: 'MyMuseumB')); - } - - - if (_streamRanging != null) { if (_streamRanging!.isPaused) { _streamRanging?.resume(); @@ -204,6 +206,7 @@ class _VisitPageState extends State with WidgetsBindingObserver { //}); } }); + } /*pauseScanBeacon() async { @@ -312,6 +315,8 @@ class _VisitPageState extends State with WidgetsBindingObserver { } }); + + return WillPopScope( child: Scaffold( appBar: CustomAppBar( @@ -333,80 +338,124 @@ class _VisitPageState extends State with WidgetsBindingObserver { child: FloatingActionButton( heroTag: "beacon", onPressed: () async { + bool isCancel = false; if(!controller.authorizationStatusOk) { //await handleOpenLocationSettings(); print("STATUUSSSS ? "); + await showDialog( + context: context, + barrierDismissible: false, + builder: (_) { + return AlertDialog( + backgroundColor: Colors.white, + content: Padding( + padding: const EdgeInsets.symmetric(vertical: 20), + child: SizedBox( + height: 150, + child: Column( + mainAxisAlignment: MainAxisAlignment.spaceAround, + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + Icon(Icons.my_location, color: kMainColor), + Text(TranslationHelper.getFromLocale("locationWarning", visitAppContext), style: TextStyle(color: kMainColor), textAlign: TextAlign.center), + ], + ), + ), + ), + actions: [ + TextButton( + child: Text(TranslationHelper.getFromLocale("close", visitAppContext), style: TextStyle(color: kMainColor)), + onPressed: () { + isCancel = true; + Navigator.of(context).pop(); + }, + ), + TextButton( + child: Text(TranslationHelper.getFromLocale("ok", visitAppContext), style: TextStyle(color: kMainColor)), + onPressed: () async { + Navigator.of(context).pop(); + }, + ) + ], + actionsAlignment: MainAxisAlignment.spaceAround, + contentPadding: EdgeInsets.zero, + ); + }); - if(Platform.isIOS) { - Map statuses0 = await [ - Permission.bluetooth, - ].request(); - Map statuses1 = await [ - Permission.bluetoothScan, - ].request(); + if(!isCancel) { + listeningState(); + if(Platform.isIOS) { + Map statuses0 = await [ + Permission.bluetooth, + ].request(); - Map statuses2 = await [ - Permission.bluetoothConnect, - ].request(); + Map statuses1 = await [ + Permission.bluetoothScan, + ].request(); - Map statuses3 = await [ - Permission.locationWhenInUse, - ].request(); + Map statuses2 = await [ + Permission.bluetoothConnect, + ].request(); - Map statuses4 = await [ - Permission.location, - ].request(); + Map statuses3 = await [ + Permission.locationWhenInUse, + ].request(); - Map statuses5 = await [ - Permission.locationAlways, - ].request(); + Map statuses4 = await [ + Permission.location, + ].request(); - print(statuses0[Permission.bluetooth]); - print(statuses1[Permission.bluetoothScan]); - print(statuses2[Permission.bluetoothConnect]); - print(statuses3[Permission.locationWhenInUse]); - print(statuses4[Permission.location]); - print(statuses5[Permission.locationAlways]); + Map statuses5 = await [ + Permission.locationAlways, + ].request(); - } else { - Map statuses = await [ - Permission.bluetoothScan, - Permission.bluetoothConnect, - Permission.location, - ].request(); + print(statuses0[Permission.bluetooth]); + print(statuses1[Permission.bluetoothScan]); + print(statuses2[Permission.bluetoothConnect]); + print(statuses3[Permission.locationWhenInUse]); + print(statuses4[Permission.location]); + print(statuses5[Permission.locationAlways]); - print(statuses[Permission.bluetoothScan]); - print(statuses[Permission.bluetoothConnect]); - print(statuses[Permission.location]); - print(statuses[Permission.locationWhenInUse]); + } else { + Map statuses = await [ + Permission.bluetoothScan, + Permission.bluetoothConnect, + Permission.location, + ].request(); - var status = await Permission.bluetoothScan.status; - print(status); + print(statuses[Permission.bluetoothScan]); + print(statuses[Permission.bluetoothConnect]); + print(statuses[Permission.location]); + print(statuses[Permission.locationWhenInUse]); + + var status = await Permission.bluetoothScan.status; + print(status); + } } - } - - if(!visitAppContext.isScanningBeacons) { - print("Start Scan"); - print(_streamRanging); - if (_streamRanging != null) { + if(!isCancel) { + if(!visitAppContext.isScanningBeacons) { + print("Start Scan"); + print(_streamRanging); + if (_streamRanging != null) { _streamRanging?.resume(); - } else { - await initScanBeacon(visitAppContext); - } + } else { + await initScanBeacon(visitAppContext); + } - controller.startScanning(); - visitAppContext.isScanningBeacons = true; - appContext.setContext(visitAppContext); - } else { - print("Pause Scan"); - controller.pauseScanning(); // PAUSE OR DISPOSE ? - visitAppContext.isScanningBeacons = false; - appContext.setContext(visitAppContext); + controller.startScanning(); + visitAppContext.isScanningBeacons = true; + appContext.setContext(visitAppContext); + } else { + print("Pause Scan"); + controller.pauseScanning(); // PAUSE OR DISPOSE ? + visitAppContext.isScanningBeacons = false; + appContext.setContext(visitAppContext); + } } }, tooltip: 'Beacon', diff --git a/lib/translations.dart b/lib/translations.dart index 9d7dba8..cf21371 100644 --- a/lib/translations.dart +++ b/lib/translations.dart @@ -9,6 +9,7 @@ List translations = [ "languageNotSupported": "Cette visite ne prend pas en charge votre langue", "downloadConfiguration": "Téléchargement de la visite en cours...", "noInternet": "Aucune connexion internet détectée", + "locationWarning": "Pour afficher du contenu en fonction de votre position, vous devez accepter de partager votre localisation avec l'application.", "search": "Rechercher", "play": "Lecture", "pause": "Pause", @@ -26,6 +27,7 @@ List translations = [ "languageNotSupported": "This tour doesn't support your language", "downloadConfiguration": "Loading tour...", "noInternet": "No internet connection detected", + "locationWarning": "To view content based on your location, you must agree to share your location with the app.", "search": "Search", "play": "Play", "pause": "Pause", @@ -43,6 +45,7 @@ List translations = [ "languageNotSupported": "Diese Tour unterstützt Ihre Sprache nicht", "downloadConfiguration": "Tour laden...", "noInternet": "Keine Internetverbindung erkannt", + "locationWarning": "Um Inhalte basierend auf Ihrem Standort anzuzeigen, müssen Sie zustimmen, Ihren Standort mit der App zu teilen.", "search": "Suche", "play": "Spiel", "pause": "Pause", @@ -60,6 +63,7 @@ List translations = [ "languageNotSupported": "Deze tour ondersteunt je taal niet", "downloadConfiguration": "De rondleiding laden...", "noInternet": "Geen internetverbinding gedetecteerd", + "locationWarning": "Als u inhoud wilt bekijken op basis van uw locatie, moet u akkoord gaan met het delen van uw locatie met de app.", "search": "Zoeken", "play": "Speel", "pause": "Pauze", @@ -77,6 +81,7 @@ List translations = [ "languageNotSupported": "Questo tour non supporta la tua lingua", "downloadConfiguration": "Caricamento del tour...", "noInternet": "Nessuna connessione Internet rilevata", + "locationWarning": "Per visualizzare i contenuti in base alla tua posizione, devi accettare di condividere la tua posizione con l'app.", "search": "Ricerca", "play": "Giocare a", "pause": "Pausa", @@ -94,6 +99,7 @@ List translations = [ "languageNotSupported": "Este tour no es compatible con tu idioma", "downloadConfiguration": "Cargando el recorrido...", "noInternet": "No se detectó conexión a Internet", + "locationWarning": "Para ver contenido basado en su ubicación, debe aceptar compartir su ubicación con la aplicación.", "search": "Búsqueda", "play": "Tocar", "pause": "Pausa", @@ -111,6 +117,7 @@ List translations = [ "languageNotSupported": "Ta wycieczka nie obsługuje Twojego języka", "downloadConfiguration": "Wczytuję prezentację...", "noInternet": "Nie wykryto połączenia internetowego", + "locationWarning": "Aby wyświetlać treści na podstawie Twojej lokalizacji, musisz wyrazić zgodę na udostępnianie swojej lokalizacji aplikacji.", "search": "Szukaj", "play": "Bawić się", "pause": "Pauza", @@ -128,6 +135,7 @@ List translations = [ "languageNotSupported": "此导览不支持您的语言", "downloadConfiguration": "正在加载导览...", "noInternet": "未检测到互联网连接", + "locationWarning": "要根据您的位置查看内容,您必须同意与该应用共享您的位置", "search": "搜索", "play": "玩", "pause": "暫停", @@ -145,6 +153,7 @@ List translations = [ "languageNotSupported": "Цей тур не підтримує вашу мову", "downloadConfiguration": "Завантаження туру...", "noInternet": "Підключення до Інтернету не виявлено", + "locationWarning": "Щоб переглядати вміст на основі вашого місцезнаходження, ви повинні погодитися поділитися своїм місцезнаходженням із програмою.", "search": "Пошук", "play": "грати", "pause": "Пауза", @@ -162,6 +171,7 @@ List translations = [ "languageNotSupported": "هذه الجولة لا تدعم لغتك", "downloadConfiguration": "جارٍ تحميل الجولة ...", "noInternet": "لم يتم الكشف عن اتصال بالإنترنت", + "locationWarning": "لعرض المحتوى بناءً على موقعك ، يجب أن توافق على مشاركة موقعك مع التطبيق", "search": "يبحث", "play": "لعب", "pause": "وقفة", diff --git a/pubspec.yaml b/pubspec.yaml index e9b7daa..faf9ba0 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -15,7 +15,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev # In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion. # Read more about iOS versioning at # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html -version: 1.0.0+5 +version: 1.0.1+6 environment: sdk: ">=2.16.2 <3.0.0"