diff --git a/android/build.gradle b/android/build.gradle index 871ba76..f7eb7f6 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -1,31 +1,31 @@ -buildscript { - ext.kotlin_version = '1.6.10' - repositories { - google() - mavenCentral() - } - - dependencies { - classpath 'com.android.tools.build:gradle:4.1.0' - classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" - } -} - -allprojects { - repositories { - google() - mavenCentral() - } -} - -rootProject.buildDir = '../build' -subprojects { - project.buildDir = "${rootProject.buildDir}/${project.name}" -} -subprojects { - project.evaluationDependsOn(':app') -} - -task clean(type: Delete) { - delete rootProject.buildDir -} +buildscript { + ext.kotlin_version = '1.7.10' + repositories { + google() + mavenCentral() + } + + dependencies { + classpath 'com.android.tools.build:gradle:7.3.0' + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" + } +} + +allprojects { + repositories { + google() + mavenCentral() + } +} + +rootProject.buildDir = '../build' +subprojects { + project.buildDir = "${rootProject.buildDir}/${project.name}" +} +subprojects { + project.evaluationDependsOn(':app') +} + +tasks.register("clean", Delete) { + delete rootProject.buildDir +} diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties index 3c9d085..3c472b9 100644 --- a/android/gradle/wrapper/gradle-wrapper.properties +++ b/android/gradle/wrapper/gradle-wrapper.properties @@ -2,4 +2,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-all.zip diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 9ceedae..07d74b1 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -4,47 +4,11 @@ PODS: - connectivity_plus (0.0.1): - Flutter - ReachabilitySwift - - DKImagePickerController/Core (4.3.4): - - DKImagePickerController/ImageDataManager - - DKImagePickerController/Resource - - DKImagePickerController/ImageDataManager (4.3.4) - - DKImagePickerController/PhotoGallery (4.3.4): - - DKImagePickerController/Core - - DKPhotoGallery - - DKImagePickerController/Resource (4.3.4) - - DKPhotoGallery (0.0.17): - - DKPhotoGallery/Core (= 0.0.17) - - DKPhotoGallery/Model (= 0.0.17) - - DKPhotoGallery/Preview (= 0.0.17) - - DKPhotoGallery/Resource (= 0.0.17) - - SDWebImage - - SwiftyGif - - DKPhotoGallery/Core (0.0.17): - - DKPhotoGallery/Model - - DKPhotoGallery/Preview - - SDWebImage - - SwiftyGif - - DKPhotoGallery/Model (0.0.17): - - SDWebImage - - SwiftyGif - - DKPhotoGallery/Preview (0.0.17): - - DKPhotoGallery/Model - - DKPhotoGallery/Resource - - SDWebImage - - SwiftyGif - - DKPhotoGallery/Resource (0.0.17): - - SDWebImage - - SwiftyGif - - file_picker (0.0.1): - - DKImagePickerController/PhotoGallery - - Flutter - Flutter (1.0.0) - flutter_compass (0.0.1): - Flutter - flutter_keyboard_visibility (0.0.1): - Flutter - - flutter_local_notifications (0.0.1): - - Flutter - FMDB (2.7.5): - FMDB/standard (= 2.7.5) - FMDB/standard (2.7.5) @@ -52,7 +16,7 @@ PODS: - Flutter - google_maps_flutter_ios (0.0.1): - Flutter - - GoogleMaps + - GoogleMaps (< 8.0) - GoogleMaps (5.2.0): - GoogleMaps/Maps (= 5.2.0) - GoogleMaps/Base (5.2.0) @@ -60,124 +24,93 @@ PODS: - GoogleMaps/Base - image_picker_ios (0.0.1): - Flutter - - is_lock_screen (2.0.0): + - isar_flutter_libs (1.0.0): - Flutter - - move_to_background (0.0.1): + - path_provider_foundation (0.0.1): - Flutter - - path_provider_ios (0.0.1): - - Flutter - - permission_handler_apple (9.0.4): + - FlutterMacOS + - permission_handler_apple (9.1.1): - Flutter - ReachabilitySwift (5.0.0) - - SDWebImage (5.15.5): - - SDWebImage/Core (= 5.15.5) - - SDWebImage/Core (5.15.5) - - share_plus (0.0.1): - - Flutter - shared_preferences_foundation (0.0.1): - Flutter - FlutterMacOS - - sqflite (0.0.2): + - sqflite (0.0.3): - Flutter - FMDB (>= 2.7.5) - - SwiftyGif (5.4.4) - url_launcher_ios (0.0.1): - Flutter DEPENDENCIES: - camera_avfoundation (from `.symlinks/plugins/camera_avfoundation/ios`) - connectivity_plus (from `.symlinks/plugins/connectivity_plus/ios`) - - file_picker (from `.symlinks/plugins/file_picker/ios`) - Flutter (from `Flutter`) - flutter_compass (from `.symlinks/plugins/flutter_compass/ios`) - flutter_keyboard_visibility (from `.symlinks/plugins/flutter_keyboard_visibility/ios`) - - flutter_local_notifications (from `.symlinks/plugins/flutter_local_notifications/ios`) - geolocator_apple (from `.symlinks/plugins/geolocator_apple/ios`) - google_maps_flutter_ios (from `.symlinks/plugins/google_maps_flutter_ios/ios`) - image_picker_ios (from `.symlinks/plugins/image_picker_ios/ios`) - - is_lock_screen (from `.symlinks/plugins/is_lock_screen/ios`) - - move_to_background (from `.symlinks/plugins/move_to_background/ios`) - - path_provider_ios (from `.symlinks/plugins/path_provider_ios/ios`) + - isar_flutter_libs (from `.symlinks/plugins/isar_flutter_libs/ios`) + - path_provider_foundation (from `.symlinks/plugins/path_provider_foundation/darwin`) - permission_handler_apple (from `.symlinks/plugins/permission_handler_apple/ios`) - - share_plus (from `.symlinks/plugins/share_plus/ios`) - - shared_preferences_foundation (from `.symlinks/plugins/shared_preferences_foundation/ios`) + - shared_preferences_foundation (from `.symlinks/plugins/shared_preferences_foundation/darwin`) - sqflite (from `.symlinks/plugins/sqflite/ios`) - url_launcher_ios (from `.symlinks/plugins/url_launcher_ios/ios`) SPEC REPOS: trunk: - - DKImagePickerController - - DKPhotoGallery - FMDB - GoogleMaps - ReachabilitySwift - - SDWebImage - - SwiftyGif EXTERNAL SOURCES: camera_avfoundation: :path: ".symlinks/plugins/camera_avfoundation/ios" connectivity_plus: :path: ".symlinks/plugins/connectivity_plus/ios" - file_picker: - :path: ".symlinks/plugins/file_picker/ios" Flutter: :path: Flutter flutter_compass: :path: ".symlinks/plugins/flutter_compass/ios" flutter_keyboard_visibility: :path: ".symlinks/plugins/flutter_keyboard_visibility/ios" - flutter_local_notifications: - :path: ".symlinks/plugins/flutter_local_notifications/ios" geolocator_apple: :path: ".symlinks/plugins/geolocator_apple/ios" google_maps_flutter_ios: :path: ".symlinks/plugins/google_maps_flutter_ios/ios" image_picker_ios: :path: ".symlinks/plugins/image_picker_ios/ios" - is_lock_screen: - :path: ".symlinks/plugins/is_lock_screen/ios" - move_to_background: - :path: ".symlinks/plugins/move_to_background/ios" - path_provider_ios: - :path: ".symlinks/plugins/path_provider_ios/ios" + isar_flutter_libs: + :path: ".symlinks/plugins/isar_flutter_libs/ios" + path_provider_foundation: + :path: ".symlinks/plugins/path_provider_foundation/darwin" permission_handler_apple: :path: ".symlinks/plugins/permission_handler_apple/ios" - share_plus: - :path: ".symlinks/plugins/share_plus/ios" shared_preferences_foundation: - :path: ".symlinks/plugins/shared_preferences_foundation/ios" + :path: ".symlinks/plugins/shared_preferences_foundation/darwin" sqflite: :path: ".symlinks/plugins/sqflite/ios" url_launcher_ios: :path: ".symlinks/plugins/url_launcher_ios/ios" SPEC CHECKSUMS: - camera_avfoundation: 07c77549ea54ad95d8581be86617c094a46280d9 - connectivity_plus: 413a8857dd5d9f1c399a39130850d02fe0feaf7e - DKImagePickerController: b512c28220a2b8ac7419f21c491fc8534b7601ac - DKPhotoGallery: fdfad5125a9fdda9cc57df834d49df790dbb4179 - file_picker: ce3938a0df3cc1ef404671531facef740d03f920 + camera_avfoundation: 3125e8cd1a4387f6f31c6c63abb8a55892a9eeeb + connectivity_plus: 07c49e96d7fc92bc9920617b83238c4d178b446a Flutter: f04841e97a9d0b0a8025694d0796dd46242b2854 flutter_compass: cbbd285cea1584c7ac9c4e0c3e1f17cbea55e855 flutter_keyboard_visibility: 0339d06371254c3eb25eeb90ba8d17dca8f9c069 - flutter_local_notifications: 0c0b1ae97e741e1521e4c1629a459d04b9aec743 FMDB: 2ce00b547f966261cd18927a3ddb07cb6f3db82a geolocator_apple: cc556e6844d508c95df1e87e3ea6fa4e58c50401 - google_maps_flutter_ios: 66201f392bf62d500f07670a30488a247b9bb5b9 + google_maps_flutter_ios: abdac20d6ce8931f6ebc5f46616df241bfaa2cfd GoogleMaps: 025272d5876d3b32604e5c080dc25eaf68764693 - image_picker_ios: b786a5dcf033a8336a657191401bfdf12017dabb - is_lock_screen: 8ae6397a49b2fde58fd80a6ed30fbaf2be9418d6 - move_to_background: 39a5b79b26d577b0372cbe8a8c55e7aa9fcd3a2d - path_provider_ios: 14f3d2fd28c4fdb42f44e0f751d12861c43cee02 - permission_handler_apple: 44366e37eaf29454a1e7b1b7d736c2cceaeb17ce + image_picker_ios: 4a8aadfbb6dc30ad5141a2ce3832af9214a705b5 + isar_flutter_libs: b69f437aeab9c521821c3f376198c4371fa21073 + path_provider_foundation: 29f094ae23ebbca9d3d0cec13889cd9060c0e943 + permission_handler_apple: e76247795d700c14ea09e3a2d8855d41ee80a2e6 ReachabilitySwift: 985039c6f7b23a1da463388634119492ff86c825 - SDWebImage: fd7e1a22f00303e058058278639bf6196ee431fe - share_plus: 056a1e8ac890df3e33cb503afffaf1e9b4fbae68 - shared_preferences_foundation: 986fc17f3d3251412d18b0265f9c64113a8c2472 - sqflite: 6d358c025f5b867b29ed92fc697fd34924e11904 - SwiftyGif: 93a1cc87bf3a51916001cf8f3d63835fb64c819f - url_launcher_ios: 839c58cdb4279282219f5e248c3321761ff3c4de + shared_preferences_foundation: 5b919d13b803cadd15ed2dc053125c68730e5126 + sqflite: 31f7eba61e3074736dff8807a9b41581e4f7f15a + url_launcher_ios: 08a3dfac5fb39e8759aeb0abbd5d9480f30fc8b4 PODFILE CHECKSUM: a1c2f8dde3796ecc1697a15e7c75eb5205d8a740 diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj index ad9d44e..4dc0f41 100644 --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -156,7 +156,7 @@ 97C146E61CF9000F007C117D /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 1300; + LastUpgradeCheck = 1430; ORGANIZATIONNAME = ""; TargetAttributes = { 97C146ED1CF9000F007C117D = { diff --git a/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme index c87d15a..a6b826d 100644 --- a/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -1,6 +1,6 @@ createState() => _MyAppState(); @@ -44,22 +42,38 @@ class _MyAppState extends State with WidgetsBindingObserver { @override void initState() { super.initState(); - WidgetsBinding.instance?.addObserver(this); + WidgetsBinding.instance.addObserver(this); } + @override - void didChangeAppLifecycleState(AppLifecycleState state) async { - super.didChangeAppLifecycleState(state); - if (state == AppLifecycleState.inactive) { - print('app inactive, is lock screen: ${await isLockScreen()}'); - } else if (state == AppLifecycleState.resumed) { - DestinationController destinationController = Get.find(); - destinationController.initGPS(); - print('app resumed'); - } + void dispose() { + WidgetsBinding.instance.removeObserver(this); + super.dispose(); } + void didChangeAppLifecycleState(AppLifecycleState state) { + switch (state) { + case AppLifecycleState.resumed: + print("RESUMED"); + DestinationController destinationController = Get.find(); + destinationController.initGPS(); + break; + case AppLifecycleState.inactive: + print("INACTIVE"); + break; + case AppLifecycleState.paused: + print("PAUSED"); + break; + case AppLifecycleState.detached: + print("DETACHED"); + break; + case AppLifecycleState.hidden: + print("DETACHED"); + break; + } + } @override Widget build(BuildContext context) { @@ -70,8 +84,9 @@ class _MyAppState extends State with WidgetsBindingObserver { fallbackLocale: const Locale('en', 'US'), title: 'ROGAINING', theme: ThemeData( - primarySwatch: Colors.blue, - visualDensity: VisualDensity.adaptivePlatformDensity, + colorScheme: + ColorScheme.fromSeed(seedColor: Color.fromARGB(255, 36, 135, 221)), + useMaterial3: true, ), debugShowCheckedModeBanner: false, defaultTransition: Transition.cupertino, diff --git a/lib/pages/changepassword/change_password_page.dart b/lib/pages/changepassword/change_password_page.dart index 26943bf..3c6798c 100644 --- a/lib/pages/changepassword/change_password_page.dart +++ b/lib/pages/changepassword/change_password_page.dart @@ -112,7 +112,7 @@ class ChangePasswordPage extends StatelessWidget { ) ), const SizedBox(height: 20,), - Row( + const Row( mainAxisAlignment: MainAxisAlignment.center, children: [ diff --git a/lib/pages/destination/destination_controller.dart b/lib/pages/destination/destination_controller.dart index 65d50c8..b7c5a64 100644 --- a/lib/pages/destination/destination_controller.dart +++ b/lib/pages/destination/destination_controller.dart @@ -1,5 +1,3 @@ - - import 'dart:io'; import 'package:camera_camera/camera_camera.dart'; @@ -25,9 +23,9 @@ import 'package:rogapp/widgets/bottom_sheet_new.dart'; import 'dart:async'; import 'package:modal_bottom_sheet/modal_bottom_sheet.dart'; +import 'package:shared_preferences/shared_preferences.dart'; class DestinationController extends GetxController { - late LocationSettings locationSettings; var destinationCount = 0.obs; @@ -37,14 +35,14 @@ class DestinationController extends GetxController { bool skip_10s = false; - List currentSelectedDestinations = [].obs; + List currentSelectedDestinations = [].obs; var is_in_checkin = false.obs; var is_in_rog = false.obs; var is_at_start = false.obs; var is_at_goal = false.obs; var is_photo_shoot = false.obs; - DateTime last_goal_at = DateTime.now().subtract(const Duration(days:1)); + DateTime last_goal_at = DateTime.now().subtract(const Duration(days: 1)); //List rogainings = [].obs; bool checking_in = false; @@ -58,7 +56,6 @@ class DestinationController extends GetxController { bool skip_gps = false; - Map matrix = {}; final photos = [].obs; @@ -70,50 +67,50 @@ class DestinationController extends GetxController { int chekcs = 0; var rogaining_counted = false.obs; - String getFormatedTime(DateTime datetime){ - return DateFormat('yyyy-MM-dd HH:mm:ss').format(datetime); + String getFormatedTime(DateTime datetime) { + return DateFormat('yyyy-MM-dd HH:mm:ss').format(datetime); } - Destination festuretoDestination(GeoJsonFeature fs){ + Destination festuretoDestination(GeoJsonFeature fs) { GeoJsonMultiPoint mp = fs.geometry as GeoJsonMultiPoint; - LatLng pt = LatLng(mp.geoSerie!.geoPoints[0].latitude, mp.geoSerie!.geoPoints[0].longitude); + LatLng pt = LatLng(mp.geoSerie!.geoPoints[0].latitude, + mp.geoSerie!.geoPoints[0].longitude); - //print("----- ${indexController.currentFeature[0].properties} -----"); + //print("----- ${indexController.currentFeature[0].properties} -----"); - return Destination( - name: fs.properties!["location_name"], - address: fs.properties!["address"], - phone: fs.properties!["phone"], - email: fs.properties!["email"], - webcontents: fs.properties!["webcontents"], - videos: fs.properties!["videos"], - category: fs.properties!["category"], - series: 1, - lat: pt.latitude, - lon: pt.longitude, - location_id: fs.properties!["location_id"], - list_order: 1, - photos: fs.properties!["photos"], - checkin_radious: fs.properties!["checkin_radius"], - auto_checkin: fs.properties!["auto_checkin"] == true ? 1 : 0, - cp: fs.properties!["cp"], - checkin_point: fs.properties!["checkin_point"], - buy_point: fs.properties!["buy_point"], - selected: false, - checkedin: false, - hidden_location: fs.properties!["hidden_location"] == true ?1 : 0 - ); + return Destination( + name: fs.properties!["location_name"], + address: fs.properties!["address"], + phone: fs.properties!["phone"], + email: fs.properties!["email"], + webcontents: fs.properties!["webcontents"], + videos: fs.properties!["videos"], + category: fs.properties!["category"], + series: 1, + lat: pt.latitude, + lon: pt.longitude, + location_id: fs.properties!["location_id"], + list_order: 1, + photos: fs.properties!["photos"], + checkin_radious: fs.properties!["checkin_radius"], + auto_checkin: fs.properties!["auto_checkin"] == true ? 1 : 0, + cp: fs.properties!["cp"], + checkin_point: fs.properties!["checkin_point"], + buy_point: fs.properties!["buy_point"], + selected: false, + checkedin: false, + hidden_location: fs.properties!["hidden_location"] == true ? 1 : 0); } void startTimerLocation(GeoJsonFeature fs, double distance) { print("---- in startTimer ----"); //skip_gps = true; double checkinRadious = fs.properties!['checkin_radius'] ?? double.infinity; - if(checkinRadious >= distance){ + if (checkinRadious >= distance) { indexController.currentFeature.clear(); Destination d = festuretoDestination(fs); - for(Destination de in destinations){ - if(de.location_id == d.location_id){ + for (Destination de in destinations) { + if (de.location_id == d.location_id) { d = de; break; } @@ -135,158 +132,173 @@ class DestinationController extends GetxController { //make current destination print("---- checkin_radious $checkinRadious ----"); print("---- distance $distance ----"); - if(checkinRadious >= distance){ + if (checkinRadious >= distance) { //currentSelectedDestinations.add(d); indexController.currentDestinationFeature.clear(); indexController.currentDestinationFeature.add(d); - print("---- checked in as ${indexController.currentDestinationFeature[0].checkedin.toString()} ----"); - } - else { + print( + "---- checked in as ${indexController.currentDestinationFeature[0].checkedin.toString()} ----"); + } else { skip_gps = false; return; } - if(is_photo_shoot.value == true){ + if (is_photo_shoot.value == true) { photos.clear(); - showModalBottomSheet(context: Get.context!, isScrollControlled: true, - builder:((context) => CameraPage()) - ).whenComplete((){ - skip_gps = false; - chekcs = 0; - is_in_checkin.value = false; - }); + showModalBottomSheet( + context: Get.context!, + isScrollControlled: true, + builder: ((context) => CameraPage())).whenComplete(() { + skip_gps = false; + chekcs = 0; + is_in_checkin.value = false; + }); return; } DatabaseHelper db = DatabaseHelper.instance; List ds = await db.getDestinationByLatLon(d.lat!, d.lon!); - if(ds.isEmpty){ + if (ds.isEmpty) { print("----- in location popup cp - ${d.cp}----"); - if(d.cp == -1 && DateTime.now().difference(last_goal_at).inHours >= 24){ + if (d.cp == -1 && DateTime.now().difference(last_goal_at).inHours >= 24) { chekcs = 1; //start - print("---- in start -----"); - chekcs = 1; - is_in_checkin.value = true; - is_at_start.value = true; - showModalBottomSheet(context: Get.context!, isScrollControlled: true, - builder:((context) => BottomSheetNew()) - ).whenComplete((){ - skip_gps = false; - chekcs = 0; - is_at_start.value = false; - is_in_checkin.value = false; - }); - } - else if(is_in_rog.value == true && indexController.rog_mode == 1) - { + print("---- in start -----"); + chekcs = 1; + is_in_checkin.value = true; + is_at_start.value = true; + showModalBottomSheet( + context: Get.context!, + isScrollControlled: true, + builder: ((context) => BottomSheetNew())).whenComplete(() { + skip_gps = false; + chekcs = 0; + is_at_start.value = false; + is_in_checkin.value = false; + }); + } else if (is_in_rog.value == true && indexController.rog_mode == 1) { print("----- in location popup checkin cp - ${d.cp}----"); chekcs = 2; is_in_checkin.value = true; - showModalBottomSheet(context: Get.context!, isScrollControlled: true, - builder:((context) => BottomSheetNew()) - ).whenComplete((){ + showModalBottomSheet( + context: Get.context!, + isScrollControlled: true, + builder: ((context) => BottomSheetNew())).whenComplete(() { skip_gps = false; - chekcs =0; + chekcs = 0; is_in_checkin.value = false; }); } } - print("---- location checkin radious ${d.checkin_radious} ----"); - print("---- already checked in $locationAlreadyCheckedIn ----"); - if(checkinRadious >= distance && locationAlreadyCheckedIn == false && is_in_rog.value == true){ - if(autoCheckin){ - if(!checking_in){ - print("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ make checkin ${d.sub_loc_id}@@@@@@@@@@@"); - makeCheckin(d, true,""); - if(d.cp != -1){ - rogaining_counted.value =true; - } - skip_gps = false; - } - } - else{ - print("--- hidden loc ${d.hidden_location} ----"); - // ask for checkin - if(d.hidden_location != null && d.hidden_location == 0 && is_in_rog.value == true && d.cp != -1){ - chekcs = 3; - is_in_checkin.value = true; - photos.clear(); - showModalBottomSheet(context: Get.context!, isScrollControlled: true, - builder:((context) => CameraPage(destination: d,)) - ).whenComplete((){ - skip_gps = false; - rogaining_counted.value =true; - chekcs = 0; - is_in_checkin.value = false; - }); - } - else if(is_in_rog.value == true && d.cp != -1){ - chekcs = 4; - is_in_checkin.value = true; - showMaterialModalBottomSheet( - expand: true, - context: Get.context!, - backgroundColor: Colors.transparent, - builder: (context) => BottomSheetNew() - ).whenComplete(() { - skip_gps = false; - chekcs = 0; - is_in_checkin.value = false; - }); - // showModalBottomSheet(context: Get.context!, isScrollControlled: true, - // builder:((context) => BottomSheetNew()) - // ).whenComplete((){ - // skip_gps = false; - // chekcs = 0; - // is_in_checkin.value = false; - // }); - } - - } + print("---- location checkin radious ${d.checkin_radious} ----"); + print("---- already checked in $locationAlreadyCheckedIn ----"); + if (checkinRadious >= distance && + locationAlreadyCheckedIn == false && + is_in_rog.value == true) { + if (autoCheckin) { + if (!checking_in) { + print( + "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ make checkin ${d.sub_loc_id}@@@@@@@@@@@"); + makeCheckin(d, true, ""); + if (d.cp != -1) { + rogaining_counted.value = true; } - print("---- cp --- ${d.cp} -----"); - print("--- at goal $is_at_goal ---"); - print("--- rog counted $rogaining_counted ---"); - print("--- loc already checked in $locationAlreadyCheckedIn ---"); - print("==== date diff is ${DateTime.now().difference(last_goal_at).inHours} ===="); - if(isuserLoggedIn && d.cp == -1 && locationAlreadyCheckedIn && skip_10s == false){ - //check for rogaining - if(is_at_goal.value == false && rogaining_counted.value){ - //goal - print("---- in goal -----"); - chekcs = 5; - is_at_goal.value = true; - photos.clear(); - showModalBottomSheet(context: Get.context!, isScrollControlled: true, - builder:((context) => CameraPage(destination: d,)) - ).whenComplete((){ - skip_gps = false; - chekcs = 0; - is_at_goal.value = false; - }); - } - else if(is_in_rog.value == false && indexController.rog_mode == 1 && DateTime.now().difference(last_goal_at).inHours >= 24){ - //start - print("---- in start -----"); - chekcs = 6; - is_at_start.value = true; - showModalBottomSheet(context: Get.context!, isScrollControlled: true, - builder:((context) => BottomSheetNew()) - ).whenComplete((){ - print("----- finished start -------"); - skip_gps = false; - chekcs = 0; - is_at_start.value = false; - }); - } - } - print("==== _chekcs $chekcs ===="); - if(chekcs == 0){ skip_gps = false; } + } else { + print("--- hidden loc ${d.hidden_location} ----"); + // ask for checkin + if (d.hidden_location != null && + d.hidden_location == 0 && + is_in_rog.value == true && + d.cp != -1) { + chekcs = 3; + is_in_checkin.value = true; + photos.clear(); + showModalBottomSheet( + context: Get.context!, + isScrollControlled: true, + builder: ((context) => CameraPage( + destination: d, + ))).whenComplete(() { + skip_gps = false; + rogaining_counted.value = true; + chekcs = 0; + is_in_checkin.value = false; + }); + } else if (is_in_rog.value == true && d.cp != -1) { + chekcs = 4; + is_in_checkin.value = true; + showMaterialModalBottomSheet( + expand: true, + context: Get.context!, + backgroundColor: Colors.transparent, + builder: (context) => BottomSheetNew()).whenComplete(() { + skip_gps = false; + chekcs = 0; + is_in_checkin.value = false; + }); + // showModalBottomSheet(context: Get.context!, isScrollControlled: true, + // builder:((context) => BottomSheetNew()) + // ).whenComplete((){ + // skip_gps = false; + // chekcs = 0; + // is_in_checkin.value = false; + // }); + } + } + } + print("---- cp --- ${d.cp} -----"); + print("--- at goal $is_at_goal ---"); + print("--- rog counted $rogaining_counted ---"); + print("--- loc already checked in $locationAlreadyCheckedIn ---"); + print( + "==== date diff is ${DateTime.now().difference(last_goal_at).inHours} ===="); + if (isuserLoggedIn && + d.cp == -1 && + locationAlreadyCheckedIn && + skip_10s == false) { + //check for rogaining + if (is_at_goal.value == false && rogaining_counted.value) { + //goal + print("---- in goal -----"); + chekcs = 5; + is_at_goal.value = true; + photos.clear(); + showModalBottomSheet( + context: Get.context!, + isScrollControlled: true, + builder: ((context) => CameraPage( + destination: d, + ))).whenComplete(() { + skip_gps = false; + chekcs = 0; + is_at_goal.value = false; + }); + } else if (is_in_rog.value == false && + indexController.rog_mode == 1 && + DateTime.now().difference(last_goal_at).inHours >= 24) { + //start + print("---- in start -----"); + chekcs = 6; + is_at_start.value = true; + showModalBottomSheet( + context: Get.context!, + isScrollControlled: true, + builder: ((context) => BottomSheetNew())).whenComplete(() { + print("----- finished start -------"); + skip_gps = false; + chekcs = 0; + is_at_start.value = false; + }); + } + } + print("==== _chekcs $chekcs ===="); + if (chekcs == 0) { + skip_gps = false; + } } void resetRogaining() async { @@ -298,8 +310,6 @@ class DestinationController extends GetxController { is_at_goal.value = false; is_gps_selected.value = true; skip_gps = false; - - _start = 0; chekcs = 0; @@ -307,17 +317,16 @@ class DestinationController extends GetxController { DatabaseHelper db = DatabaseHelper.instance; int? _latgoal = await db.latestGoal(); - if(_latgoal != null){ + if (_latgoal != null) { last_goal_at = DateTime.fromMicrosecondsSinceEpoch(_latgoal); print("===== last goal : $last_goal_at ====="); } - - db.deleteAllDestinations().then((value){ + db.deleteAllDestinations().then((value) { PopulateDestinations(); initGPS(); }); - + // currentSelectedDestinations.forEach((element) { // deleteDestination(element); // }); @@ -329,94 +338,130 @@ class DestinationController extends GetxController { context, MaterialPageRoute( builder: (_) => CameraCamera( - onFile: (file) { - photos.add(file); - Navigator.pop(context); - print("----image file is : $file----"); + onFile: (file) { + photos.add(file); + Navigator.pop(context); + print("----image file is : $file----"); //setState(() {}); }, - ))); + ))); } - void getRoutePoints() { indexController.routePoints = []; indexController.routePointLenght.value = 0; - DestinationService.getDestinationLine(destinations, matrix)?.then((value){ + DestinationService.getDestinationLine(destinations, matrix)?.then((value) { indexController.routePoints = value; - indexController.routePointLenght.value = indexController.routePoints.length; + indexController.routePointLenght.value = + indexController.routePoints.length; }); } - Future getDestinationForLatLong(double lat, double long)async { - - for(final d in destinations){ - if(lat == d.lat && long == d.lon){ - return d; - } - } - return null; + Future getDestinationForLatLong(double lat, double long) async { + for (final d in destinations) { + if (lat == d.lat && long == d.lon) { + return d; + } + } + return null; } - void checkForCheckin(double la, double ln){ + void CallforCheckin(Destination d) { + bool autoCheckin = d.auto_checkin == 0 ? false : true; + if (autoCheckin) { + if (!checking_in) { + print( + "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ make checkin ${d.sub_loc_id}@@@@@@@@@@@"); + makeCheckin(d, true, ""); + if (d.cp != -1) { + rogaining_counted.value = true; + } + skip_gps = false; + } + } else { + print("--- hidden loc ${d.hidden_location} ----"); + // ask for checkin + if (d.hidden_location != null && + d.hidden_location == 0 && + is_in_rog.value == true && + d.cp != -1) { + chekcs = 3; + is_in_checkin.value = true; + photos.clear(); + showModalBottomSheet( + context: Get.context!, + isScrollControlled: true, + builder: ((context) => CameraPage( + destination: d, + ))).whenComplete(() { + skip_gps = false; + rogaining_counted.value = true; + chekcs = 0; + is_in_checkin.value = false; + }); + } else { + Get.snackbar("始まっていない", "ロゲイニングを始める必要があります"); + } + } + } + void checkForCheckin(double la, double ln) { print("--- skip_gps ---- $skip_gps----"); - - for(final d in destinations){ + for (final d in destinations) { print("--- check checkin for--loc_id- ${d.sub_loc_id}----"); - double lat = d.lat!; - double lon = d.lon!; - LatLng p = LatLng(lat, lon); - getDestinationForLatLong(lat, lon).then((value){ - var distance = const Distance(); - double dist = distance.as(LengthUnit.Meter, LatLng(lat, lon), LatLng(la, ln)); - //double checkin_radious = value!.checkin_radious ?? double.infinity; - //bool auto_checkin = value.auto_checkin == 0 ? false : true; - //bool location_already_checked_id = d.checkedin ?? false; + double lat = d.lat!; + double lon = d.lon!; + LatLng p = LatLng(lat, lon); + getDestinationForLatLong(lat, lon).then((value) { + var distance = const Distance(); + double dist = + distance.as(LengthUnit.Meter, LatLng(lat, lon), LatLng(la, ln)); + //double checkin_radious = value!.checkin_radious ?? double.infinity; + //bool auto_checkin = value.auto_checkin == 0 ? false : true; + //bool location_already_checked_id = d.checkedin ?? false; - // print("-----rogaining_counted---${rogaining_counted.value}-----"); - // print("-----is_in_rog---${is_in_rog}-----"); - // print("-----dist is ---${dist}-----"); - //print("----- ${indexController.currentUser} ----"); - - if(dist <= 250 && skip_gps == false){ - //near a destination - print("---- time with ${d.location_id} ----"); - startTimer(d, dist); - } - - }); + // print("-----rogaining_counted---${rogaining_counted.value}-----"); + // print("-----is_in_rog---${is_in_rog}-----"); + // print("-----dist is ---${dist}-----"); + //print("----- ${indexController.currentUser} ----"); + if (dist <= 250 && skip_gps == false) { + //near a destination + print("---- time with ${d.location_id} ----"); + startTimer(d, dist); + } + }); } - if(indexController.locations.isEmpty) return; + if (indexController.locations.isEmpty) return; //check for location in bounds - for(GeoJsonFeature fs in indexController.locations[0].collection){ + for (GeoJsonFeature fs in indexController.locations[0].collection) { + GeoJsonMultiPoint mp = fs.geometry as GeoJsonMultiPoint; + LatLng pt = LatLng(mp.geoSerie!.geoPoints[0].latitude, + mp.geoSerie!.geoPoints[0].longitude); - GeoJsonMultiPoint mp = fs.geometry as GeoJsonMultiPoint; - LatLng pt = LatLng(mp.geoSerie!.geoPoints[0].latitude, mp.geoSerie!.geoPoints[0].longitude); + double latFs = pt.latitude; + double lonFs = pt.longitude; + LatLng pFs = LatLng(latFs, lonFs); + var distanceFs = const Distance(); + double distFs = + distanceFs.as(LengthUnit.Meter, LatLng(latFs, lonFs), LatLng(la, ln)); - double latFs = pt.latitude; - double lonFs = pt.longitude; - LatLng pFs = LatLng(latFs, lonFs); - var distanceFs = const Distance(); - double distFs = distanceFs.as(LengthUnit.Meter, LatLng(latFs, lonFs), LatLng(la, ln)); - - if(distFs <= 250 && skip_gps == false){ - //near a location - print("---- before call startTimerLocation ----"); - startTimerLocation(fs, distFs); - } + if (distFs <= 250 && skip_gps == false) { + //near a location + print("---- before call startTimerLocation ----"); + startTimerLocation(fs, distFs); + } } } void addToRogaining(double lat, double lon, int destinationId) async { DatabaseHelper db = DatabaseHelper.instance; List d = await db.getDestinationById(destinationId); - if(d.isEmpty){ + if (d.isEmpty) { Destination df = festuretoDestination(indexController.currentFeature[0]); print("--- made checkin ${df.location_id} ----"); makeCheckin(df, true, ""); @@ -424,108 +469,113 @@ class DestinationController extends GetxController { is_in_rog.value = true; } - void makeCheckin(Destination destination, bool action, String imageurl) async { - print("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ressssss ${destination.sub_loc_id}@@@@@@@@@@@"); - DatabaseHelper db = DatabaseHelper.instance; - List ddd = await db.getDestinationByLatLon(destination.lat!, destination.lon!); - - if(ddd.isEmpty){ - destination.checkedin = true; - await db.insertDestination(destination); - } + void makeCheckin( + Destination destination, bool action, String imageurl) async { + print( + "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ressssss ${destination.sub_loc_id}@@@@@@@@@@@"); + DatabaseHelper db = DatabaseHelper.instance; + List ddd = + await db.getDestinationByLatLon(destination.lat!, destination.lon!); - PopulateDestinations(); + if (ddd.isEmpty) { + destination.checkedin = true; + await db.insertDestination(destination); + } - /// post to NATNAT - if(indexController.currentUser.isNotEmpty){ - double cpNum = destination.cp!; - - int userId = indexController.currentUser[0]["user"]["id"]; - //print("--- Pressed -----"); - String _team = indexController.currentUser[0]["user"]['team_name']; - //print("--- _team : ${_team}-----"); - String _event_code = indexController.currentUser[0]["user"]["event_code"]; - //print("--- _event_code : ${_event_code}-----"); - String _token = indexController.currentUser[0]["token"]; - //print("--- _token : ${_token}-----"); - DateTime now = DateTime.now(); - String formattedDate = DateFormat('yyyy-MM-dd HH:mm:ss').format(now); + PopulateDestinations(); - print("------ checkin event $_event_code ------"); - ExternalService().makeCheckpoint(userId, _token, formattedDate, _team,cpNum.round(), _event_code, imageurl).then((value){ - print("------Ext service check point $value ------"); - }); - } + /// post to NATNAT + if (indexController.currentUser.isNotEmpty) { + double cpNum = destination.cp!; + int userId = indexController.currentUser[0]["user"]["id"]; + //print("--- Pressed -----"); + String _team = indexController.currentUser[0]["user"]['team_name']; + //print("--- _team : ${_team}-----"); + String _event_code = indexController.currentUser[0]["user"]["event_code"]; + //print("--- _event_code : ${_event_code}-----"); + String _token = indexController.currentUser[0]["token"]; + //print("--- _token : ${_token}-----"); + DateTime now = DateTime.now(); + String formattedDate = DateFormat('yyyy-MM-dd HH:mm:ss').format(now); + + print("------ checkin event $_event_code ------"); + ExternalService() + .makeCheckpoint(userId, _token, formattedDate, _team, cpNum.round(), + _event_code, imageurl) + .then((value) { + print("------Ext service check point $value ------"); + }); + } } - void initGPS(){ + void initGPS() { checkPermission(); PopulateDestinations(); - + //print("------ in iniit"); if (defaultTargetPlatform == TargetPlatform.android) { locationSettings = AndroidSettings( - accuracy: LocationAccuracy.bestForNavigation, - distanceFilter: 0, - forceLocationManager: true, - intervalDuration: const Duration(seconds: 1), - //(Optional) Set foreground notification config to keep the app alive - //when going to the background - foregroundNotificationConfig: const ForegroundNotificationConfig( + accuracy: LocationAccuracy.bestForNavigation, + distanceFilter: 0, + forceLocationManager: true, + intervalDuration: const Duration(seconds: 1), + //(Optional) Set foreground notification config to keep the app alive + //when going to the background + foregroundNotificationConfig: const ForegroundNotificationConfig( notificationText: - "Example app will continue to receive your location even when you aren't using it", + "Example app will continue to receive your location even when you aren't using it", notificationTitle: "Running in Background", enableWakeLock: true, - ) - ); - } else if (defaultTargetPlatform == TargetPlatform.iOS || defaultTargetPlatform == TargetPlatform.macOS) { + )); + } else if (defaultTargetPlatform == TargetPlatform.iOS || + defaultTargetPlatform == TargetPlatform.macOS) { locationSettings = AppleSettings( - accuracy: LocationAccuracy.bestForNavigation, - activityType: ActivityType.fitness, - distanceFilter: 0, - pauseLocationUpdatesAutomatically: false, - // Only set to true if our app will be started up in the background. - showBackgroundLocationIndicator: true - ); + accuracy: LocationAccuracy.bestForNavigation, + activityType: ActivityType.fitness, + distanceFilter: 0, + pauseLocationUpdatesAutomatically: false, + // Only set to true if our app will be started up in the background. + showBackgroundLocationIndicator: true); } else { - locationSettings = const LocationSettings( + locationSettings = const LocationSettings( accuracy: LocationAccuracy.high, distanceFilter: 0, ); } try { - - StreamSubscription positionStream = Geolocator.getPositionStream(locationSettings: locationSettings).listen( - - (Position? position) { + StreamSubscription positionStream = + Geolocator.getPositionStream(locationSettings: locationSettings) + .listen((Position? position) { current_lat = position != null ? position.latitude : 0; current_lon = position != null ? position.longitude : 0; indexController.current_lat = position != null ? position.latitude : 0; current_lon = position != null ? position.longitude : 0; - print("==== gps skip is : ${skip_gps.toString()}, selected is $is_gps_selected , $current_lat"); + print( + "==== gps skip is : ${skip_gps.toString()}, selected is $is_gps_selected , $current_lat"); - if(is_gps_selected.value){ + if (is_gps_selected.value) { double czoom = indexController.rogMapController.zoom; - indexController.rogMapController.move(LatLng(position!.latitude, position.longitude), czoom); + indexController.rogMapController + .move(LatLng(position!.latitude, position.longitude), czoom); //String user_id = indexController.currentUser[0]["user"]["id"].toString(); //TrackingService.addTrack(user_id, position!.latitude, position.longitude).then((val){ - //print("---- postion is ${position.latitude}, ${position.longitude}"); - gps.clear(); - gps.add("-- lat : ${position.latitude}, lon : ${position.longitude} --"); - checkForCheckin(position.latitude, position.longitude); - print("--- call check checkin"); - print("---- skip gps is ${skip_gps.toString()} ----"); + //print("---- postion is ${position.latitude}, ${position.longitude}"); + gps.clear(); + gps.add( + "-- lat : ${position.latitude}, lon : ${position.longitude} --"); + checkForCheckin(position.latitude, position.longitude); + print("--- call check checkin"); + print("---- skip gps is ${skip_gps.toString()} ----"); //}); - } - //print(position == null ? 'Unknown' : 'current position is ${position.latitude.toString()}, ${position.longitude.toString()}'); + //print(position == null ? 'Unknown' : 'current position is ${position.latitude.toString()}, ${position.longitude.toString()}'); }); - } catch (err){ + } catch (err) { locationPermission.clear(); locationPermission.add(err.toString()); } @@ -533,28 +583,40 @@ class DestinationController extends GetxController { ever(indexController.connectionStatusName, connectionChanged); } - @override void onInit() async { - initGPS(); super.onInit(); + } + readUserToken() async{ + final SharedPreferences prefs = await SharedPreferences.getInstance(); + indexController.userToken = prefs.getString("user_token"); } @override - void onReady() { - Get.toNamed(AppPages.LOGIN)!.then((value){ - if(indexController.currentUser.isNotEmpty) { - fixMapBound(); - } - else { + void onReady() async { + await readUserToken(); + final token = indexController.userToken; + if(token != null && token.isNotEmpty){ + await indexController.loadUserDetailsForToken(token); + fixMapBound(token); + return; + } + + Get.toNamed(AppPages.LOGIN)!.then((value) { + if (indexController.currentUser.isNotEmpty) { + final tk = indexController.currentUser[0]["token"]; + fixMapBound(tk); + } else { Get.toNamed(AppPages.TRAVEL); - PerfectureService.getSubExt("9").then((value){ - if(value != null){ - LatLngBounds bnds = LatLngBounds(LatLng(value[1], value[0]), LatLng(value[3], value[2])); - indexController.mapController.fitBounds(bnds); //.centerZoomFitBounds(bnds); + PerfectureService.getSubExt("9").then((value) { + if (value != null) { + LatLngBounds bnds = LatLngBounds( + LatLng(value[1], value[0]), LatLng(value[3], value[2])); + indexController.mapController + .fitBounds(bnds); //.centerZoomFitBounds(bnds); } }); } @@ -562,48 +624,59 @@ class DestinationController extends GetxController { super.onReady(); } - void fixMapBound(){ - String _token = indexController.currentUser[0]["token"]; - indexController.switchPage(AppPages.INITIAL); - LocationService.getLocationsExt(_token).then((value) { - if(value != null){ - print("--- loc ext is - $value ----"); - LatLngBounds bnds = LatLngBounds(LatLng(value[1], value[0]), LatLng(value[3], value[2])); - print("--- bnds is - $bnds ----"); - indexController.mapController.fitBounds( - bnds, - ); - indexController.currentBound.clear(); - indexController.currentBound.add(bnds); - indexController.loadLocationsBound(); - } - }); + void fixMapBound(String token) { + //String _token = indexController.currentUser[0]["token"]; + indexController.switchPage(AppPages.INITIAL); + LocationService.getLocationsExt(token).then((value) { + if (value != null) { + print("--- loc ext is - $value ----"); + LatLngBounds bnds = LatLngBounds( + LatLng(value[1], value[0]), LatLng(value[3], value[2])); + print("--- bnds is - $bnds ----"); + indexController.mapController.fitBounds( + bnds, + ); + indexController.currentBound.clear(); + indexController.currentBound.add(bnds); + indexController.loadLocationsBound(); + } + }); } void connectionChanged(String val) { print('----- %%%%%%%%%%%%%%%%%%%%% ----- $val'); Map _res = {}; - if(val == "wifi" || val == "mobile"){ + if (val == "wifi" || val == "mobile") { String _token = indexController.currentUser[0]["token"]; DatabaseHelper db = DatabaseHelper.instance; - db.allRogianing().then((value){ + db.allRogianing().then((value) { value.forEach((e) async { - if(e.rog_action_type == 0){ + if (e.rog_action_type == 0) { _res = await ExternalService().StartRogaining(); - } - else if(e.rog_action_type == 1){ + } else if (e.rog_action_type == 1) { var datetime = DateTime.fromMicrosecondsSinceEpoch(e.checkintime!); - _res = await ExternalService().makeCheckpoint(e.user_id!, _token, getFormatedTime(datetime), e.team_name!, e.cp_number!, e.event_code!, e.image!); - } - else if(e.rog_action_type == 2){ + _res = await ExternalService().makeCheckpoint( + e.user_id!, + _token, + getFormatedTime(datetime), + e.team_name!, + e.cp_number!, + e.event_code!, + e.image!); + } else if (e.rog_action_type == 2) { var datetime = DateTime.fromMicrosecondsSinceEpoch(e.checkintime!); - _res = await ExternalService().makeGoal(e.user_id!, _token, e.team_name!, e.image!, getFormatedTime(datetime), e.event_code!); + _res = await ExternalService().makeGoal( + e.user_id!, + _token, + e.team_name!, + e.image!, + getFormatedTime(datetime), + e.event_code!); } - if(_res.isNotEmpty){ + if (_res.isNotEmpty) { db.deleteRogaining(e.id!); } - }); }); } @@ -613,18 +686,18 @@ class DestinationController extends GetxController { LocationPermission permission = await Geolocator.checkPermission(); if (permission != LocationPermission.whileInUse || permission != LocationPermission.always) { - locationPermission.clear(); - locationPermission.add(permission.name); + locationPermission.clear(); + locationPermission.add(permission.name); permission = await Geolocator.requestPermission(); } } - Destination? destinationById(int id){ + Destination? destinationById(int id) { Destination? d; print("--- target des - $id ----"); - for(Destination ss in destinations){ + for (Destination ss in destinations) { print("--- des - ${ss.location_id} ----"); - if(ss.location_id == id){ + if (ss.location_id == id) { d = ss; break; } @@ -632,65 +705,64 @@ class DestinationController extends GetxController { return d; } - void deleteDestination(Destination d){ + void deleteDestination(Destination d) { //int id = destinations[index].location_id!; //print("---- index ${destinations[index].location_id!}-----"); - for(Destination ss in destinations){ - if(ss.location_id == d.location_id){ + for (Destination ss in destinations) { + if (ss.location_id == d.location_id) { destinations.remove(ss); break; } } DatabaseHelper db = DatabaseHelper.instance; - db.deleteDestination(d.location_id!).then((value){ + db.deleteDestination(d.location_id!).then((value) { PopulateDestinations(); }); } - void deleteAllDestinations(){ + void deleteAllDestinations() { DatabaseHelper db = DatabaseHelper.instance; - db.deleteAllDestinations().then((value){ + db.deleteAllDestinations().then((value) { PopulateDestinations(); }); } - // ---------- database ------------------/// + // ---------- database ------------------/// - void addDestinations(Destination dest){ - - print('------ destination controller in add destination ${dest.checkin_radious} ---- :::::'); + void addDestinations(Destination dest) { + print( + '------ destination controller in add destination ${dest.checkin_radious} ---- :::::'); DatabaseHelper db = DatabaseHelper.instance; - db.getDestinationByLatLon(dest.lat!, dest.lon!).then((value){ - if(value.isNotEmpty){ - db.deleteDestination(value[0].location_id!).then((value){ - db.insertDestination(dest).then((value){ - print("----- destination controller deleted and inserted destination id $value ---- :::::"); + db.getDestinationByLatLon(dest.lat!, dest.lon!).then((value) { + if (value.isNotEmpty) { + db.deleteDestination(value[0].location_id!).then((value) { + db.insertDestination(dest).then((value) { + print( + "----- destination controller deleted and inserted destination id $value ---- :::::"); PopulateDestinations(); }); }); - } - else { - db.insertDestination(dest).then((value){ - print("----- destination controller added as new $value--- :::::"); - PopulateDestinations(); - }); + } else { + db.insertDestination(dest).then((value) { + print("----- destination controller added as new $value--- :::::"); + PopulateDestinations(); + }); } }); - } void toggleSelection(Destination dest) async { DatabaseHelper db = DatabaseHelper.instance; await db.toggleSelecttion(dest); destinations.clear(); - db.getDestinations().then((value){ + db.getDestinations().then((value) { destinationCount.value = 0; currentSelectedDestinations.clear(); - for(Destination d in value){ + for (Destination d in value) { //print("------ destination controller populating destination-------- ${d.checkedin}-------- :::::"); //print("-----populated----- ${d.toMap()}"); - if(d.selected!){ + if (d.selected!) { currentSelectedDestinations.add(d); } destinations.add(d); @@ -710,120 +782,109 @@ class DestinationController extends GetxController { }); } - void destinationMatrixFromCurrentPoint(List points){ + void destinationMatrixFromCurrentPoint(List points) { buildShowDialog(Get.context!); - MatrixService.getDestinations(points).then((mat){ + MatrixService.getDestinations(points).then((mat) { print(" matrix is ------- $mat"); matrix = mat; - try{ + try { indexController.routePoints = []; indexController.routePointLenght.value = 0; - DestinationService.getDestinationLine(points, matrix)?.then((value){ + DestinationService.getDestinationLine(points, matrix)?.then((value) { indexController.routePoints = value; - indexController.routePointLenght.value = indexController.routePoints.length; + indexController.routePointLenght.value = + indexController.routePoints.length; //Get.toNamed(AppPages.TRAVEL); }); destinationCount.value = destinations.length; - } - catch(_){ + } catch (_) { skip_gps = false; return; - } - finally{ + } finally { Get.back(); } }); } - void PopulateDestinations(){ - print("--------- destination controller populsting destinations ----------- ::::::"); + void PopulateDestinations() { + print( + "--------- destination controller populsting destinations ----------- ::::::"); DatabaseHelper db = DatabaseHelper.instance; destinations.clear(); - db.getDestinations().then((value){ + db.getDestinations().then((value) { destinationCount.value = 0; - for(Destination d in value){ - print("------ destination controller populating destination-------- ${d.checkedin}-------- :::::"); + for (Destination d in value) { + print( + "------ destination controller populating destination-------- ${d.checkedin}-------- :::::"); print("-----populated----- ${d.toMap()}"); destinations.add(d); } - // destinationCount.value = 0; - print("------ destination controller destinationcount-------- $destinationCount-------- :::::"); + // destinationCount.value = 0; + print( + "------ destination controller destinationcount-------- $destinationCount-------- :::::"); + // MatrixService.getDestinations(value).then((mat){ + // print(" matrix is ------- ${mat}"); + // matrix = mat; - // MatrixService.getDestinations(value).then((mat){ - // print(" matrix is ------- ${mat}"); - // matrix = mat; + // try{ + // getRoutePoints(); + // destinationCount.value = destinations.length; + // } + // catch(_){ + // skip_gps = false; + // return; + // } - // try{ - // getRoutePoints(); - // destinationCount.value = destinations.length; - // } - // catch(_){ - // skip_gps = false; - // return; - // } - - // }); + // }); }); - } - - void makeOrder(Destination d, int dir){ + void makeOrder(Destination d, int dir) { DatabaseHelper db = DatabaseHelper.instance; - db.updateOrder(d, dir).then((value){ + db.updateOrder(d, dir).then((value) { PopulateDestinations(); }); } - - void makeNext(Destination pt){ - - for(int i=0; i<= destinations.length - 1; i++){ + void makeNext(Destination pt) { + for (int i = 0; i <= destinations.length - 1; i++) { Destination p = destinations[i]; - if(p.lat == pt.lat && p.lon == pt.lon ){ - - if(indexController.currentDestinationFeature.isNotEmpty){ - indexController.currentDestinationFeature.clear(); - } - if(i >= destinations.length - 1 ){ - indexController.currentDestinationFeature.add(destinations[0]); - //getAction(); - } - else{ - indexController.currentDestinationFeature.add(destinations[i + 1]); - //getAction(); - } + if (p.lat == pt.lat && p.lon == pt.lon) { + if (indexController.currentDestinationFeature.isNotEmpty) { + indexController.currentDestinationFeature.clear(); + } + if (i >= destinations.length - 1) { + indexController.currentDestinationFeature.add(destinations[0]); + //getAction(); + } else { + indexController.currentDestinationFeature.add(destinations[i + 1]); + //getAction(); + } } } - } - void makePrevious(Destination pt){ - - for(int i=0; i<= destinations.length - 1; i++){ + void makePrevious(Destination pt) { + for (int i = 0; i <= destinations.length - 1; i++) { Destination p = destinations[i]; - if(p.lat == pt.lat && p.lon == pt.lon ){ - - if(indexController.currentDestinationFeature.isNotEmpty){ - indexController.currentDestinationFeature.clear(); - } - if(i <= 0){ - indexController.currentDestinationFeature.add(destinations[destinations.length -1]); - //getAction(); - } - else{ - indexController.currentDestinationFeature.add(destinations[i - 1]); - //getAction(); - } + if (p.lat == pt.lat && p.lon == pt.lon) { + if (indexController.currentDestinationFeature.isNotEmpty) { + indexController.currentDestinationFeature.clear(); + } + if (i <= 0) { + indexController.currentDestinationFeature + .add(destinations[destinations.length - 1]); + //getAction(); + } else { + indexController.currentDestinationFeature.add(destinations[i - 1]); + //getAction(); + } } } - } - - -} \ No newline at end of file +} diff --git a/lib/pages/history/history_page.dart b/lib/pages/history/history_page.dart new file mode 100644 index 0000000..11e6781 --- /dev/null +++ b/lib/pages/history/history_page.dart @@ -0,0 +1,65 @@ +import 'dart:io'; + +import 'package:flutter/material.dart'; +import 'package:rogapp/model/destination.dart'; +import 'package:rogapp/utils/database_helper.dart'; + +class HistoryPage extends StatefulWidget { + const HistoryPage({super.key}); + + @override + State createState() => _HistoryPageState(); +} + +class _HistoryPageState extends State { + DatabaseHelper db = DatabaseHelper.instance; + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + title: Text("History"), + ), + body: SingleChildScrollView( + child: Column( + children: [ + FutureBuilder( + future: db.getDestinations(), + builder: (BuildContext context, + AsyncSnapshot> snapshot) { + if (snapshot.connectionState == ConnectionState.done) { + if (snapshot.hasError) { + return Center( + child: Text( + '${snapshot.error} occurred', + style: TextStyle(fontSize: 18), + ), + ); + } else if (snapshot.hasData) { + final dests = snapshot.data; + if (dests!.length > 0) { + return Center( + child: ListView.builder(itemBuilder:(ctx, index){ + return ListTile( + title: Text(dests[index].name?? ""), + subtitle: Text(dests[index].address ?? ""), + leading: dests[0].photos != null ? Image.file(File(dests[0].photos!)) : Container(), + ); + }), + ); + } else { + return Center(child: Text("No checkin yet")); + } + } + } + else if(snapshot.connectionState == ConnectionState.waiting){ + return Center(child: CircularProgressIndicator(),); + } + return Container(); + }), + ], + ), + ), + ); + } +} diff --git a/lib/pages/index/index_controller.dart b/lib/pages/index/index_controller.dart index a0fc3a6..530c508 100644 --- a/lib/pages/index/index_controller.dart +++ b/lib/pages/index/index_controller.dart @@ -20,6 +20,7 @@ import 'package:rogapp/services/cat_service.dart'; import 'package:rogapp/services/location_service.dart'; import 'package:rogapp/services/perfecture_service.dart'; import 'package:rogapp/utils/database_helper.dart'; +import 'package:shared_preferences/shared_preferences.dart'; class IndexController extends GetxController { List locations = [].obs; @@ -51,6 +52,8 @@ class IndexController extends GetxController { MapController mapController = MapController(); MapController rogMapController = MapController(); + String? userToken; + var mode = 0.obs; // master mode, rog or selection @@ -191,50 +194,27 @@ List getLocationsList(){ } -void login(String email, String password, BuildContext context){ - AuthService.login(email, password).then((value){ + void login(String email, String password, BuildContext context) { + AuthService.login(email, password).then((value) { print("------- logged in user details ######## $value ###### --------"); - if(value.isNotEmpty){ - currentUser.clear(); - currentUser.add(value); - is_loading.value = false; - Navigator.pop(context); - loadUserDetails(); - loadLocationsBound(); - cats.clear(); - if(currentFeature.isNotEmpty){ - getAction(); - } - - if(currentUser.isNotEmpty){ - rog_mode.value = 0 ; - } - else{ - rog_mode.value = 1; - } - - if(rog_mode.value == 1){ - switchPage(AppPages.TRAVEL); - } - else{ - switchPage(AppPages.INITIAL); - } - //Get.toNamed(AppPages.INITIAL); - }else{ + if (value.isNotEmpty) { + Navigator.pop(context); + print("--------- user details login ----- $value"); + changeUser(value); + } else { is_loading.value = false; Get.snackbar( - "Failed", - "User login failed, please try again.", - icon: const Icon(Icons.error, size: 40.0, color: Colors.blue), - snackPosition: SnackPosition.TOP, - duration: const Duration(milliseconds: 800), - backgroundColor: Colors.yellow, - //icon:Image(image:AssetImage("assets/images/dora.png")) - ); - } - - }); - } + "Failed", + "User login failed, please try again.", + icon: const Icon(Icons.error, size: 40.0, color: Colors.blue), + snackPosition: SnackPosition.TOP, + duration: const Duration(milliseconds: 800), + backgroundColor: Colors.yellow, + //icon:Image(image:AssetImage("assets/images/dora.png")) + ); + } + }); + } void changePassword(String oldpassword, String newpassword, BuildContext context){ String _token = currentUser[0]['token']; @@ -407,6 +387,58 @@ void login(String email, String password, BuildContext context){ } } + void saveToDevice(String val) async { + final SharedPreferences prefs = await SharedPreferences.getInstance(); + await prefs.setString("user_token", val); + } + + void changeUser(Map value, {bool replace = true}) { + print("---- change user to ${value} -----"); + currentUser.clear(); + currentUser.add(value); + if(replace){ + saveToDevice(currentUser[0]["token"]); + } + is_loading.value = false; + loadUserDetails(); + loadLocationsBound(); + cats.clear(); + if (currentFeature.isNotEmpty) { + getAction(); + } + + if (currentUser.isNotEmpty) { + rog_mode.value = 0; + } else { + rog_mode.value = 1; + } + + if (rog_mode.value == 1) { + switchPage(AppPages.TRAVEL); + } else { + switchPage(AppPages.INITIAL); + } + //Get.toNamed(AppPages.INITIAL); + } + + loadUserDetailsForToken(String token) async { + AuthService.userForToken(token).then((value) { + print("----token val-- $value ------"); + if(value![0]["user"].isEmpty){ + Get.toNamed(AppPages.LOGIN); + return; + } + changeUser(value[0], replace:false); + print("--------- user details ----- $value"); + // if (value != null && value.isNotEmpty) { + // bool paid = value[0]["paid"] as bool; + // if (paid) { + // loadCustomAreas(); + // } + // } + }); + } + void loadCustomAreas(){ customAreas.clear(); diff --git a/lib/pages/index/index_page.dart b/lib/pages/index/index_page.dart index ec47149..14d54cc 100644 --- a/lib/pages/index/index_page.dart +++ b/lib/pages/index/index_page.dart @@ -1,4 +1,3 @@ - import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:rogapp/pages/destination/destination_controller.dart'; @@ -8,12 +7,12 @@ import 'package:rogapp/routes/app_pages.dart'; import 'package:rogapp/widgets/list_widget.dart'; import 'package:rogapp/widgets/map_widget.dart'; - class IndexPage extends GetView { IndexPage({Key? key}) : super(key: key); final IndexController indexController = Get.find(); - final DestinationController destinationController = Get.find(); + final DestinationController destinationController = + Get.find(); @override Widget build(BuildContext context) { @@ -21,39 +20,47 @@ class IndexPage extends GetView { onWillPop: () async => false, child: Scaffold( drawer: DrawerPage(), - appBar: AppBar( - // automaticallyImplyLeading: false, - // leading: IconButton( - // icon: Icon(Icons.arrow_back_ios), - // onPressed: (){ - // indexController.switchPage(AppPages.TRAVEL); - // }, - // ), - //automaticallyImplyLeading: false, - title: Text("add_location".tr), - actions: [ - IconButton( - onPressed: (){ - destinationController.fixMapBound(); - }, - icon: const Icon(Icons.refresh) - ), - InkWell( - onTap: (){ - Get.toNamed(AppPages.SEARCH); - }, - child: Container( - height: 32, - width: 75, - decoration: BoxDecoration( - color: Colors.blue, - borderRadius: BorderRadius.circular(25), - - ), - child: const Center(child: Icon(Icons.search),), - ), + appBar: AppBar( + // automaticallyImplyLeading: false, + // leading: IconButton( + // icon: Icon(Icons.arrow_back_ios), + // onPressed: (){ + // indexController.switchPage(AppPages.TRAVEL); + // }, + // ), + //automaticallyImplyLeading: false, + title: Text("add_location".tr), + actions: [ + IconButton( + onPressed: () { + Get.toNamed(AppPages.HISTORY); + }, + icon: const Icon(Icons.history)), + IconButton( + onPressed: () { + final tk = indexController.currentUser[0]["token"]; + if (tk != null) { + destinationController.fixMapBound(tk); + } + }, + icon: const Icon(Icons.refresh)), + InkWell( + onTap: () { + Get.toNamed(AppPages.SEARCH); + }, + child: Container( + height: 32, + width: 75, + decoration: BoxDecoration( + color: Colors.blue, + borderRadius: BorderRadius.circular(25), ), - //CatWidget(indexController: indexController,), + child: const Center( + child: Icon(Icons.search), + ), + ), + ), + //CatWidget(indexController: indexController,), ], ), bottomNavigationBar: BottomAppBar( @@ -61,49 +68,57 @@ class IndexPage extends GetView { mainAxisAlignment: MainAxisAlignment.end, children: [ Padding( - padding: const EdgeInsets.only(right: 10.0, top: 4.0, bottom: 4.0), + padding: + const EdgeInsets.only(right: 10.0, top: 4.0, bottom: 4.0), child: InkWell( - child: - Obx(() => - destinationController.is_gps_selected == true ? - Padding( - padding: const EdgeInsets.only(right: 10.0, top: 4.0, bottom: 4.0), - child: InkWell( - child: const Image(image: AssetImage('assets/images/route3_off.png'), width: 35, height: 35,), - onTap: (){ - //indexController.switchPage(AppPages.TRAVEL); - }, - ), - ) : - Padding( - padding: const EdgeInsets.only(right: 10.0, top: 4.0, bottom: 4.0), - child: InkWell( - child: const Image(image: AssetImage('assets/images/route2_on.png'),width: 35, height: 35,), - onTap: (){ - //indexController.switchPage(AppPages.TRAVEL); - }, - ), - ) - ) - ), + child: + Obx(() => destinationController.is_gps_selected == true + ? Padding( + padding: const EdgeInsets.only( + right: 10.0, top: 4.0, bottom: 4.0), + child: InkWell( + child: const Image( + image: AssetImage( + 'assets/images/route3_off.png'), + width: 35, + height: 35, + ), + onTap: () { + //indexController.switchPage(AppPages.TRAVEL); + }, + ), + ) + : Padding( + padding: const EdgeInsets.only( + right: 10.0, top: 4.0, bottom: 4.0), + child: InkWell( + child: const Image( + image: AssetImage( + 'assets/images/route2_on.png'), + width: 35, + height: 35, + ), + onTap: () { + //indexController.switchPage(AppPages.TRAVEL); + }, + ), + ))), ), ], ), ), floatingActionButton: FloatingActionButton( - onPressed: (){ + onPressed: () { indexController.toggleMode(); - if(indexController.currentCat.isNotEmpty){ - print(indexController.currentCat[0].toString()); - } - + if (indexController.currentCat.isNotEmpty) { + print(indexController.currentCat[0].toString()); + } }, tooltip: 'Increment', - child: Obx(() => - indexController.mode == 0 ? - const Image(image: AssetImage('assets/images/list2.png')) - : - const Image(image: AssetImage('assets/images/map.png')), + child: Obx( + () => indexController.mode == 0 + ? const Image(image: AssetImage('assets/images/list2.png')) + : const Image(image: AssetImage('assets/images/map.png')), ), elevation: 4.0, ), @@ -129,11 +144,11 @@ class IndexPage extends GetView { // // ), // child: SingleChildScrollView( // scrollDirection: Axis.horizontal, - // child: Obx(() => + // child: Obx(() => // Row( // mainAxisAlignment: MainAxisAlignment.spaceBetween, // children: [ - // indexController.is_mapController_loaded.value == false ? + // indexController.is_mapController_loaded.value == false ? // Center(child: CircularProgressIndicator()) // : // BreadCrumbWidget(mapController: indexController.mapController), @@ -146,7 +161,7 @@ class IndexPage extends GetView { // // onPressed: (){ // // indexController.currentCat.clear(); // // indexController.loadLocationsBound(); - // // }, + // // }, // // icon: Icon(Icons.cancel, color: Colors.red,) // // ) : // // Container(width: 0, height: 0,) @@ -158,18 +173,15 @@ class IndexPage extends GetView { // ), // ), Expanded( - child: Obx(() => - indexController.mode == 0 ? - MapWidget() : - const ListWidget(), - ) - - ) + child: Obx( + () => indexController.mode == 0 + ? MapWidget() + : const ListWidget(), + )) ], ), ), ), ); } - -} \ No newline at end of file +} diff --git a/lib/pages/permission/permission.dart b/lib/pages/permission/permission.dart index 4ef3ba1..be2af8a 100644 --- a/lib/pages/permission/permission.dart +++ b/lib/pages/permission/permission.dart @@ -20,8 +20,8 @@ class _PermissionHandlerScreenState extends State { barrierDismissible: false, // user must tap button! builder: (BuildContext context) { return AlertDialog( - title: Text('ロケーション許可'), - content: SingleChildScrollView( + title: const Text('ロケーション許可'), + content: const SingleChildScrollView( child: ListBody( children: [ Text( 'このアプリでは、位置情報の収集を行います。'), @@ -160,8 +160,8 @@ class _PermissionHandlerScreenState extends State { showDialog( context: context, builder: (_) => AlertDialog( - title: Text('無効'), - content: SingleChildScrollView( + title: const Text('無効'), + content: const SingleChildScrollView( child: ListBody( children: [ Text( '位置情報が無効になっています'), @@ -187,8 +187,8 @@ class _PermissionHandlerScreenState extends State { showDialog( context: context, builder: (_) => AlertDialog( - title: Text('ロケーション許可'), - content: SingleChildScrollView( + title: const Text('ロケーション許可'), + content: const SingleChildScrollView( child: ListBody( children: [ Text( 'このアプリでは、位置情報の収集を行います。'), diff --git a/lib/routes/app_pages.dart b/lib/routes/app_pages.dart index 7e7554b..562ef86 100644 --- a/lib/routes/app_pages.dart +++ b/lib/routes/app_pages.dart @@ -6,6 +6,7 @@ import 'package:rogapp/pages/changepassword/change_password_page.dart'; import 'package:rogapp/pages/city/city_page.dart'; import 'package:rogapp/pages/destination/destination_binding.dart'; import 'package:rogapp/pages/destination/destination_page.dart'; +import 'package:rogapp/pages/history/history_page.dart'; import 'package:rogapp/pages/home/home_binding.dart'; import 'package:rogapp/pages/home/home_page.dart'; @@ -48,6 +49,7 @@ class AppPages { static const CHANGE_PASSWORD = Routes.CHANGE_PASSWORD; static const CAMERA_PAGE = Routes.CAMERA_PAGE; static const PROGRESS = Routes.PROGRESS; + static const HISTORY = Routes.HISTORY; static final routes = [ // GetPage( @@ -141,6 +143,10 @@ class AppPages { GetPage( name: Routes.PROGRESS, page: () => const ProgressPage(), + ), + GetPage( + name: Routes.HISTORY, + page: () => const HistoryPage(), ) ]; } \ No newline at end of file diff --git a/lib/routes/app_routes.dart b/lib/routes/app_routes.dart index b48d014..753b9fc 100644 --- a/lib/routes/app_routes.dart +++ b/lib/routes/app_routes.dart @@ -24,4 +24,5 @@ abstract class Routes { static const CHANGE_PASSWORD = '/change_password'; static const CAMERA_PAGE = '/camera_page'; static const PROGRESS = '/progress'; + static const HISTORY = '/history'; } diff --git a/lib/services/auth_service.dart b/lib/services/auth_service.dart index 66b5050..77d9fe2 100644 --- a/lib/services/auth_service.dart +++ b/lib/services/auth_service.dart @@ -118,6 +118,26 @@ class AuthService{ + static Future?> userForToken(String token) async { + Map cats = {}; + String serverUrl = ConstValues.currentServer(); + String url = '$serverUrl/api/user/'; + print('++++++++$url'); + print("---- UserDetails url is $url"); + final response = await http.get(Uri.parse(url), + headers: { + 'Content-Type': 'application/json; charset=UTF-8', + 'Authorization': 'Token $token' + }, + ); + + if (response.statusCode == 200) { + + cats = json.decode(utf8.decode(response.bodyBytes)); + print("--- eeeeee $cats ----"); + } + return [{"user":cats}]; + } diff --git a/lib/widgets/bottom_sheet_new.dart b/lib/widgets/bottom_sheet_new.dart index a2354a3..b020288 100644 --- a/lib/widgets/bottom_sheet_new.dart +++ b/lib/widgets/bottom_sheet_new.dart @@ -15,756 +15,968 @@ import 'package:rogapp/widgets/bottom_sheet_controller.dart'; import 'package:url_launcher/url_launcher.dart'; class BottomSheetNew extends GetView { - BottomSheetNew({ Key? key }) : super(key: key); + BottomSheetNew({Key? key}) : super(key: key); final IndexController indexController = Get.find(); - final DestinationController destinationController = Get.find(); - - Image getImage(){ + final DestinationController destinationController = + Get.find(); + Image getImage() { String serverUrl = ConstValues.currentServer(); - if(indexController.rog_mode == 1){ + if (indexController.rog_mode == 1) { //print("----- rogaining mode 1"); - if(indexController.currentDestinationFeature.isEmpty || indexController.currentDestinationFeature[0].photos! == ""){ - return const Image(image: AssetImage('assets/images/empty_image.png')); - } - else{ - //print("@@@@@@@@@@@@@ rog mode -------------------- ${indexController.currentDestinationFeature[0].photos} @@@@@@@@@@@"); - String _photo = indexController.currentDestinationFeature[0].photos!; - if(_photo.contains('http')){ - return Image(image: NetworkImage( - indexController.currentDestinationFeature[0].photos!, + if (indexController.currentDestinationFeature.isEmpty || + indexController.currentDestinationFeature[0].photos! == "") { + return const Image(image: AssetImage('assets/images/empty_image.png')); + } else { + //print("@@@@@@@@@@@@@ rog mode -------------------- ${indexController.currentDestinationFeature[0].photos} @@@@@@@@@@@"); + String _photo = indexController.currentDestinationFeature[0].photos!; + if (_photo.contains('http')) { + return Image( + image: NetworkImage( + indexController.currentDestinationFeature[0].photos!, ), - errorBuilder: (BuildContext context, Object exception, StackTrace? stackTrace) { + errorBuilder: (BuildContext context, Object exception, + StackTrace? stackTrace) { return Image.asset("assets/images/empty_image.png"); }, ); - } - else { - return Image(image: NetworkImage( - '$serverUrl/media/compressed/' + indexController.currentDestinationFeature[0].photos!, + } else { + return Image( + image: NetworkImage( + '$serverUrl/media/compressed/' + + indexController.currentDestinationFeature[0].photos!, ), - errorBuilder: (BuildContext context, Object exception, StackTrace? stackTrace) { + errorBuilder: (BuildContext context, Object exception, + StackTrace? stackTrace) { return Image.asset("assets/images/empty_image.png"); }, ); } } - } - else{ + } else { GeoJsonFeature gf = indexController.currentFeature[0]; - if(gf.properties!["photos"] == null || gf.properties!["photos"] == ""){ - return const Image(image: AssetImage('assets/images/empty_image.png')); - } - else{ + if (gf.properties!["photos"] == null || gf.properties!["photos"] == "") { + return const Image(image: AssetImage('assets/images/empty_image.png')); + } else { String _photo = gf.properties!["photos"]; - if(_photo.contains('http')){ - return Image(image: NetworkImage( - gf.properties!["photos"], + if (_photo.contains('http')) { + return Image( + image: NetworkImage( + gf.properties!["photos"], ), - errorBuilder: (BuildContext context, Object exception, StackTrace? stackTrace) { + errorBuilder: (BuildContext context, Object exception, + StackTrace? stackTrace) { return Image.asset("assets/images/empty_image.png"); }, - ); - } - else { - return Image(image: NetworkImage( - '$serverUrl/media/compressed/' + gf.properties!["photos"], + ); + } else { + return Image( + image: NetworkImage( + '$serverUrl/media/compressed/' + gf.properties!["photos"], ), - errorBuilder: (BuildContext context, Object exception, StackTrace? stackTrace) { + errorBuilder: (BuildContext context, Object exception, + StackTrace? stackTrace) { return Image.asset("assets/images/empty_image.png"); }, - ); + ); } + } } - } - - } void _launchURL(url) async { if (!await launch(url)) throw 'Could not launch $url'; } - bool isInDestination(String locationid){ + bool isInDestination(String locationid) { int lid = int.parse(locationid); - if(destinationController.destinations.where((element) => element.location_id == lid).isNotEmpty){ + if (destinationController.destinations + .where((element) => element.location_id == lid) + .isNotEmpty) { return true; - } - else{ + } else { return false; } } - @override Widget build(BuildContext context) { destinationController.skip_gps = true; print('---- rog_mode ----- ${indexController.rog_mode} -----'); - return indexController.rog_mode == 0 ? detailsSheet(context) : destinationSheet(context); + return indexController.rog_mode == 0 + ? detailsSheet(context) + : destinationSheet(context); } // Show destination detais SingleChildScrollView destinationSheet(BuildContext context) { - - print('---- currentDestinationFeature ----- ${indexController.currentDestinationFeature[0].name} -----'); + print( + '---- currentDestinationFeature ----- ${indexController.currentDestinationFeature[0].name} -----'); return SingleChildScrollView( - child: Column( - children: [ - Padding( - padding: const EdgeInsets.all(8.0), - child: Container( - child: Row( - children: [ - MaterialButton( - onPressed: () { - Get.back(); - //destinationController.makePrevious(indexController.currentDestinationFeature[0]); - }, - color: Colors.blue, - textColor: Colors.white, - child: const Icon( - Icons.arrow_back_ios, - size: 14, - ), - padding: const EdgeInsets.all(16), - shape: const CircleBorder(), - ), - Expanded( - child: Container( - alignment: Alignment.center, - child: Obx(() => - indexController.currentUser.isNotEmpty ? - Text("${TextUtils.getDisplayText(indexController.currentDestinationFeature[0])} : ${TextUtils.getDisplayText(indexController.currentDestinationFeature[0])} : ${indexController.currentDestinationFeature[0].name!}", style: const TextStyle( - fontSize: 15.0, - fontWeight: FontWeight.bold, - ), - ) - : - Text(indexController.currentDestinationFeature[0].name!, style: const TextStyle( - fontSize: 15.0, - fontWeight: FontWeight.bold, + child: Column( + children: [ + Padding( + padding: const EdgeInsets.all(8.0), + child: Container( + child: Row( + children: [ + MaterialButton( + onPressed: () { + Get.back(); + //destinationController.makePrevious(indexController.currentDestinationFeature[0]); + }, + color: Colors.blue, + textColor: Colors.white, + child: const Icon( + Icons.arrow_back_ios, + size: 14, ), - ) - ), + padding: const EdgeInsets.all(16), + shape: const CircleBorder(), + ), + Expanded( + child: Container( + alignment: Alignment.center, + child: Obx(() => indexController.currentUser.isNotEmpty + ? Text( + "${TextUtils.getDisplayText(indexController.currentDestinationFeature[0])} : ${TextUtils.getDisplayText(indexController.currentDestinationFeature[0])} : ${indexController.currentDestinationFeature[0].name!}", + style: const TextStyle( + fontSize: 15.0, + fontWeight: FontWeight.bold, + ), + ) + : Text( + indexController + .currentDestinationFeature[0].name!, + style: const TextStyle( + fontSize: 15.0, + fontWeight: FontWeight.bold, + ), + )), + ), + ), + ], ), ), - ], - ), - ), - ), - Row( - children: [ - Expanded( - child: SizedBox( - height: 260.0, - child: Obx(() => getImage()), + ), + Row( + children: [ + Expanded( + child: SizedBox( + height: 260.0, + child: Obx(() => getImage()), + )), + ], + ), + Row( + mainAxisAlignment: MainAxisAlignment.spaceAround, + children: [ + Obx( + () => indexController.currentDestinationFeature.isNotEmpty && + destinationController.is_in_checkin.value == true && + destinationController.is_at_start.value == false + ? Row( + children: [ + ElevatedButton( + onPressed: () { + if (indexController.currentDestinationFeature[0] + .checkedin == + null || + indexController.currentDestinationFeature[0] + .checkedin == + false) { + if (indexController + .currentDestinationFeature[0] + .hidden_location == + 0) { + destinationController.skip_gps = false; + destinationController.is_photo_shoot.value = + true; + Get.back(); + } else { + destinationController.makeCheckin( + indexController + .currentDestinationFeature[0], + true, + ""); + if (indexController + .currentDestinationFeature[0].cp != + -1) { + destinationController + .rogaining_counted.value = true; + } + } + } else { + destinationController.makeCheckin( + indexController + .currentDestinationFeature[0], + false, + ""); + } + //Get.back(); + }, + child: Text( + //Checkin + indexController.currentDestinationFeature[0] + .checkedin == + null || + indexController + .currentDestinationFeature[0] + .checkedin == + false + ? "チェックイン" + : "チェックアウト")), + ], + ) + : Container(), + ), + Obx( + () => destinationController.is_at_start.value == true + ? ElevatedButton( + onPressed: () { + destinationController.is_in_rog.value = true; + destinationController.addToRogaining( + destinationController.current_lat, + destinationController.current_lon, + indexController + .currentDestinationFeature[0].location_id!); + ExternalService() + .StartRogaining() + .then((value) => Get.back()); + }, + child: Text( + // start + indexController.currentDestinationFeature[0] + .checkedin != + null || + indexController.currentDestinationFeature[0] + .checkedin == + true + ? "ロゲイニングを開始" + : "間違った目的地...")) + : Container(), + ), + Obx( + () => destinationController.is_at_goal.value == true && + destinationController.rogaining_counted == true + ? ElevatedButton( + onPressed: () { + Get.toNamed(AppPages.CAMERA_PAGE); + Get.back(); + }, + child: Text( + //goal + indexController.currentDestinationFeature[0] + .checkedin != + null || + indexController.currentDestinationFeature[0] + .checkedin == + true + ? "ロゲイニングを終える" + : "間違った目的地 ...")) + : Container(), + ), + ], + ), + Obx( + () => indexController.currentDestinationFeature[0].address != + null && + indexController + .currentDestinationFeature[0].address!.isNotEmpty + ? getDetails(context, "address".tr, + indexController.currentDestinationFeature[0].address! ?? '') + : const SizedBox( + width: 0.0, + height: 0, + ), + ), + Obx( + () => indexController.currentDestinationFeature[0].phone != null && + indexController + .currentDestinationFeature[0].phone!.isNotEmpty + ? getDetails(context, "telephone".tr, + indexController.currentDestinationFeature[0].phone! ?? '') + : const SizedBox( + width: 0.0, + height: 0, + ), + ), + Obx( + () => indexController.currentDestinationFeature[0].email != null && + indexController + .currentDestinationFeature[0].email!.isNotEmpty + ? getDetails(context, "email".tr, + indexController.currentDestinationFeature[0].email! ?? '') + : const SizedBox( + width: 0.0, + height: 0, + ), + ), + Obx( + () => indexController.currentDestinationFeature[0].webcontents != + null && + indexController + .currentDestinationFeature[0].webcontents!.isNotEmpty + ? getDetails( + context, + "web".tr, + indexController.currentDestinationFeature[0].webcontents! ?? + '', + isurl: true) + : const SizedBox( + width: 0.0, + height: 0, + ), + ), + Obx( + () => indexController.currentDestinationFeature[0].videos != null && + indexController + .currentDestinationFeature[0].videos!.isNotEmpty + ? getDetails(context, "video".tr, + indexController.currentDestinationFeature[0].videos! ?? '', + isurl: true) + : const SizedBox( + width: 0.0, + height: 0, + ), + ), + const SizedBox( + height: 20.0, + ), + // Obx(() => + // //wantToGo(context), + + // FutureBuilder( + // future: wantToGo(context), + // builder: (context, snapshot) { + // return Container( + // child: snapshot.data, + // ); + // }, + // ), + + // ), + const SizedBox( + height: 60.0, ) - ), - ], - ), - Row( - mainAxisAlignment: MainAxisAlignment.spaceAround, - children: [ - Obx(() => - indexController.currentDestinationFeature.isNotEmpty && destinationController.is_in_checkin.value == true && destinationController.is_at_start.value == false ? - Row( - children: [ - ElevatedButton( - onPressed: (){ - if(indexController.currentDestinationFeature[0].checkedin == null || indexController.currentDestinationFeature[0].checkedin == false){ - if(indexController.currentDestinationFeature[0].hidden_location == 0){ - destinationController.skip_gps = false; - destinationController.is_photo_shoot.value = true; - Get.back(); - - } - else{ - destinationController.makeCheckin(indexController.currentDestinationFeature[0], true, ""); - if(indexController.currentDestinationFeature[0].cp != -1){ - destinationController.rogaining_counted.value =true; - } - } - - } - else{ - destinationController.makeCheckin(indexController.currentDestinationFeature[0], false, ""); - } - //Get.back(); - }, - child: Text( - //Checkin - indexController.currentDestinationFeature[0].checkedin == null || indexController.currentDestinationFeature[0].checkedin == false ? - "チェックイン" - : - "チェックアウト" - ) - ), - ], - ) - : - Container(), - ), - Obx(() => - destinationController.is_at_start.value == true ? - ElevatedButton( - onPressed: (){ - destinationController.is_in_rog.value = true; - destinationController.addToRogaining(destinationController.current_lat, destinationController.current_lon, indexController.currentDestinationFeature[0].location_id!); - ExternalService().StartRogaining().then((value) => Get.back()); - }, - child: Text( - // start - indexController.currentDestinationFeature[0].checkedin != null || indexController.currentDestinationFeature[0].checkedin == true ? - "ロゲイニングを開始" - : - "間違った目的地..." - ) - ) - : - Container(), - - ), - Obx(() => - destinationController.is_at_goal.value == true && destinationController.rogaining_counted ==true ? - ElevatedButton( - onPressed: (){ - Get.toNamed(AppPages.CAMERA_PAGE); - Get.back(); - }, - child: Text( - //goal - indexController.currentDestinationFeature[0].checkedin != null || indexController.currentDestinationFeature[0].checkedin == true ? - "ロゲイニングを終える" - : - "間違った目的地 ..." - ) - ) - : - Container(), - - ), - ], - ), - Obx(() => - indexController.currentDestinationFeature[0].address != null && indexController.currentDestinationFeature[0].address!.isNotEmpty ? - getDetails(context, "address".tr, indexController.currentDestinationFeature[0].address! ?? '') - : - const SizedBox(width: 0.0, height: 0,), - ), - Obx(() => - indexController.currentDestinationFeature[0].phone != null && indexController.currentDestinationFeature[0].phone!.isNotEmpty ? - getDetails(context, "telephone".tr, indexController.currentDestinationFeature[0].phone! ?? '') - : - const SizedBox(width: 0.0, height: 0,), - ), - Obx(() => - indexController.currentDestinationFeature[0].email != null && indexController.currentDestinationFeature[0].email!.isNotEmpty ? - getDetails(context, "email".tr, indexController.currentDestinationFeature[0].email! ?? '') - : - const SizedBox(width: 0.0, height: 0,), - ), - Obx(() => - indexController.currentDestinationFeature[0].webcontents != null && indexController.currentDestinationFeature[0].webcontents!.isNotEmpty ? - getDetails(context, "web".tr, indexController.currentDestinationFeature[0].webcontents! ?? '', isurl: true) - : - const SizedBox(width: 0.0, height: 0,), - ), - Obx(() => - indexController.currentDestinationFeature[0].videos != null && indexController.currentDestinationFeature[0].videos!.isNotEmpty ? - getDetails(context, "video".tr, indexController.currentDestinationFeature[0].videos! ?? '', isurl: true) - : - const SizedBox(width: 0.0, height: 0,), - ), - const SizedBox(height: 20.0,), - // Obx(() => - // //wantToGo(context), - - // FutureBuilder( - // future: wantToGo(context), - // builder: (context, snapshot) { - // return Container( - // child: snapshot.data, - // ); - // }, - // ), - - // ), - const SizedBox(height: 60.0,) - ], - ), - ); + ], + ), + ); } - - // show add location details + // show add location details SingleChildScrollView detailsSheet(BuildContext context) { return SingleChildScrollView( - child: Column( - children: [ - Padding( - padding: const EdgeInsets.all(8.0), - child: Container( - child: Row( - children: [ - MaterialButton( - onPressed: () { - Get.back(); - //indexController.makePrevious(indexController.currentFeature[0]); - }, - color: Colors.blue, - textColor: Colors.white, - child: const Icon( - Icons.arrow_back_ios, - //Icons.arrow_back_ios, - size: 14, - ), - padding: const EdgeInsets.all(16), - shape: const CircleBorder(), - ), - Expanded( - child: Container( - alignment: Alignment.center, - child: Obx(() => - Text(indexController.currentFeature[0].properties!["location_name"], style: const TextStyle( - fontSize: 15.0, - fontWeight: FontWeight.bold, - ), - ) - ), + child: Column( + children: [ + Padding( + padding: const EdgeInsets.all(8.0), + child: Container( + child: Row( + children: [ + MaterialButton( + onPressed: () { + Get.back(); + //indexController.makePrevious(indexController.currentFeature[0]); + }, + color: Colors.blue, + textColor: Colors.white, + child: const Icon( + Icons.arrow_back_ios, + //Icons.arrow_back_ios, + size: 14, + ), + padding: const EdgeInsets.all(16), + shape: const CircleBorder(), + ), + Expanded( + child: Container( + alignment: Alignment.center, + child: Obx(() => Text( + indexController + .currentFeature[0].properties!["location_name"], + style: const TextStyle( + fontSize: 15.0, + fontWeight: FontWeight.bold, + ), + )), + ), + ), + ], ), ), - ], - ), - ), - ), - Row( - children: [ - Expanded( - child: SizedBox( - height: 260.0, - child: Obx(() => getImage()), + ), + Row( + children: [ + Expanded( + child: SizedBox( + height: 260.0, + child: Obx(() => getImage()), + )), + ], + ), + Obx(() => Padding( + padding: const EdgeInsets.all(8.0), + child: Column( + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceAround, + children: [ + Obx( + () => indexController + .currentDestinationFeature.isNotEmpty && + indexController + .currentDestinationFeature[0].cp == + -1 && + indexController.currentDestinationFeature[0] + .checkedin == + false && + destinationController.is_at_start.value == + true + ? ElevatedButton( + onPressed: () { + destinationController.is_in_rog.value = + true; + destinationController.addToRogaining( + destinationController.current_lat, + destinationController.current_lon, + indexController + .currentDestinationFeature[0] + .location_id!); + ExternalService() + .StartRogaining() + .then((value) => Get.back()); + }, + child: Text( + // start + indexController + .currentDestinationFeature[ + 0] + .checkedin != + null || + indexController + .currentDestinationFeature[ + 0] + .checkedin == + true + ? "ロゲイニングを開始" + : "間違った目的地...")) + : Container(), + ), + Obx( + () => destinationController.is_at_goal.value == + true && + destinationController.rogaining_counted == + true + ? ElevatedButton( + onPressed: () { + Get.toNamed(AppPages.CAMERA_PAGE); + Get.back(); + }, + child: Text( + //goal + indexController + .currentDestinationFeature[ + 0] + .checkedin != + null || + indexController + .currentDestinationFeature[ + 0] + .checkedin == + true + ? "ロゲイニングを終える" + : "間違った目的地 ...")) + : Container(), + ), + ], + ), + Row( + mainAxisAlignment: MainAxisAlignment.end, + children: [ + ElevatedButton( + style: ElevatedButton.styleFrom( + backgroundColor: Theme.of(context) + .colorScheme + .onPrimaryContainer), + onPressed: () async { + Get.back(); + print("---- go to ----"); + GeoJsonFeature mp = + indexController.currentFeature[0] + as GeoJsonFeature; + Position position = + await Geolocator.getCurrentPosition( + desiredAccuracy: LocationAccuracy.lowest, + forceAndroidLocationManager: true); + print("------- position -------- $position"); + Destination ds = Destination( + lat: position.latitude, + lon: position.longitude); + + Destination tp = Destination( + lat: mp.geometry!.geoSerie!.geoPoints[0] + .latitude, + lon: mp.geometry!.geoSerie!.geoPoints[0] + .longitude); + + destinationController + .destinationMatrixFromCurrentPoint([ds, tp]); + }, + child: Text( + "ここへ行く", + style: TextStyle( + color: + Theme.of(context).colorScheme.onPrimary), + )), + SizedBox(width: 10,), + ElevatedButton( + style: ElevatedButton.styleFrom( + backgroundColor: + Theme.of(context).colorScheme.secondary), + onPressed: () async { + destinationController.CallforCheckin( + destinationController.festuretoDestination( + indexController.currentFeature[0])); + }, + child: Text("チェックイン", + style: TextStyle( + color: Theme.of(context) + .colorScheme + .onSecondary))), + ], + ), + Row( + children: [ + Expanded( + child: Row( + mainAxisAlignment: MainAxisAlignment.start, + children: [ + indexController.currentDestinationFeature + .isNotEmpty && + destinationController + .is_in_checkin.value == + true + ? Container() + : FutureBuilder( + future: wantToGo(context), + builder: (context, snapshot) { + return Container( + child: snapshot.data, + ); + }, + ), + indexController.currentFeature[0] + .properties!["location_name"] != + null && + (indexController.currentFeature[0] + .properties!["location_name"] + as String) + .isNotEmpty + ? Flexible( + child: Text(indexController + .currentFeature[0] + .properties!["location_name"])) + : const SizedBox( + width: 0.0, + height: 0, + ), + ], + ), + ), + ], + ), + const SizedBox( + height: 8.0, + ), + Padding( + padding: const EdgeInsets.all(8.0), + child: Row( + children: [ + const Icon(Icons.roundabout_left), + const SizedBox( + width: 8.0, + ), + indexController.currentFeature[0] + .properties!["address"] != + null && + (indexController.currentFeature[0] + .properties!["address"] as String) + .isNotEmpty + ? getDetails( + context, + "address".tr, + indexController.currentFeature[0] + .properties!["address"] ?? + '') + : const SizedBox( + width: 0.0, + height: 0, + ), + ], + ), + ), + Padding( + padding: const EdgeInsets.all(8.0), + child: Row( + children: [ + const Icon(Icons.phone), + const SizedBox( + width: 8.0, + ), + indexController.currentFeature[0] + .properties!["phone"] != + null && + (indexController.currentFeature[0] + .properties!["phone"] as String) + .isNotEmpty + ? getDetails( + context, + "telephone".tr, + indexController.currentFeature[0] + .properties!["phone"] ?? + '') + : const SizedBox( + width: 0.0, + height: 0, + ), + ], + ), + ), + Padding( + padding: const EdgeInsets.all(8.0), + child: Row( + children: [ + const Icon(Icons.email), + const SizedBox( + width: 8.0, + ), + indexController.currentFeature[0] + .properties!["email"] != + null && + (indexController.currentFeature[0] + .properties!["email"] as String) + .isNotEmpty + ? getDetails( + context, + "email".tr, + indexController.currentFeature[0] + .properties!["email"] ?? + '') + : const SizedBox( + width: 0.0, + height: 0, + ), + ], + ), + ), + Padding( + padding: const EdgeInsets.all(8.0), + child: Row( + children: [ + const Icon(Icons.language), + const SizedBox( + width: 8.0, + ), + indexController.currentFeature[0] + .properties!["webcontents"] != + null && + (indexController.currentFeature[0] + .properties!["webcontents"] as String) + .isNotEmpty + ? getDetails( + context, + "web".tr, + indexController.currentFeature[0] + .properties!["webcontents"] ?? + '', + isurl: true) + : const SizedBox( + width: 0.0, + height: 0, + ), + ], + ), + ), + Padding( + padding: const EdgeInsets.all(8.0), + child: Row( + children: [ + const SizedBox( + width: 8.0, + ), + indexController.currentFeature[0] + .properties!["remark"] != + null && + (indexController.currentFeature[0] + .properties!["remark"] as String) + .isNotEmpty + ? getDetails( + context, + "remarks".tr, + indexController.currentFeature[0] + .properties!["remark"] ?? + '', + isurl: false) + : const SizedBox( + width: 0.0, + height: 0, + ), + ], + ), + ), + // Text('${TextUtils.getDisplayText(indexController.currentFeature[0].properties!["cp"].toString())} - id: ${TextUtils.getDisplayText(indexController.currentFeature[0].properties!["checkin_point"].toString())}'), + ], + ), + )), + const SizedBox( + height: 60.0, ) - ), - ], - ), - Obx(() => - Padding( - padding: const EdgeInsets.all(8.0), - child: Column( - children: [ - Row( - mainAxisAlignment: MainAxisAlignment.spaceAround, - children: [ - Obx(() => - indexController.currentDestinationFeature.isNotEmpty && indexController.currentDestinationFeature[0].cp == -1 && indexController.currentDestinationFeature[0].checkedin == false && destinationController.is_at_start.value == true ? - ElevatedButton( - onPressed: (){ - destinationController.is_in_rog.value = true; - destinationController.addToRogaining(destinationController.current_lat, destinationController.current_lon, indexController.currentDestinationFeature[0].location_id!); - ExternalService().StartRogaining().then((value) => Get.back()); - }, - child: Text( - // start - indexController.currentDestinationFeature[0].checkedin != null || indexController.currentDestinationFeature[0].checkedin == true ? - "ロゲイニングを開始" - : - "間違った目的地..." - ) - ) - : - Container(), - - ), - Obx(() => - destinationController.is_at_goal.value == true && destinationController.rogaining_counted ==true ? - ElevatedButton( - onPressed: (){ - Get.toNamed(AppPages.CAMERA_PAGE); - Get.back(); - }, - child: Text( - //goal - indexController.currentDestinationFeature[0].checkedin != null || indexController.currentDestinationFeature[0].checkedin == true ? - "ロゲイニングを終える" - : - "間違った目的地 ..." - ) - ) - : - Container(), - ), - ], - ), - Row( - children: [ - Expanded( - child: Row( - mainAxisAlignment: MainAxisAlignment.start, - children: [ - indexController.currentDestinationFeature.isNotEmpty && destinationController.is_in_checkin.value == true ? - Container() - : - FutureBuilder( - future: wantToGo(context), - builder: (context, snapshot) { - return Container( - child: snapshot.data, - ); - }, - ), - indexController.currentFeature[0].properties!["location_name"] != null && (indexController.currentFeature[0].properties!["location_name"] as String).isNotEmpty ? - Flexible(child: Text(indexController.currentFeature[0].properties!["location_name"])) - : - const SizedBox(width: 0.0, height: 0,), - ], - ), - ), - ElevatedButton( - onPressed:() async { - Get.back(); - print("---- go to ----"); - GeoJsonFeature mp = indexController.currentFeature[0] as GeoJsonFeature; - Position position = await Geolocator.getCurrentPosition(desiredAccuracy: LocationAccuracy.lowest, forceAndroidLocationManager: true); - print("------- position -------- $position"); - Destination ds = Destination( - lat: position.latitude, - lon: position.longitude - ); - - Destination tp = Destination( - lat: mp.geometry!.geoSerie!.geoPoints[0].latitude, - lon: mp.geometry!.geoSerie!.geoPoints[0].longitude - ); - - - destinationController.destinationMatrixFromCurrentPoint([ds, tp]); - }, - child:const Text("ここへ行く")), - ], - ), - const SizedBox(height: 8.0,), - Padding( - padding: const EdgeInsets.all(8.0), - child: Row( - children: [ - const Icon(Icons.roundabout_left), - const SizedBox(width: 8.0,), - indexController.currentFeature[0].properties!["address"] != null && (indexController.currentFeature[0].properties!["address"] as String).isNotEmpty ? - getDetails(context, "address".tr, indexController.currentFeature[0].properties!["address"] ?? '') - : - const SizedBox(width: 0.0, height: 0,), - ], - ), - ), - Padding( - padding: const EdgeInsets.all(8.0), - child: Row( - children: [ - const Icon(Icons.phone), - const SizedBox(width: 8.0,), - indexController.currentFeature[0].properties!["phone"] != null && (indexController.currentFeature[0].properties!["phone"] as String).isNotEmpty ? - getDetails(context, "telephone".tr, indexController.currentFeature[0].properties!["phone"] ?? '') - : - const SizedBox(width: 0.0, height: 0,), - ], - ), - ), - Padding( - padding: const EdgeInsets.all(8.0), - child: Row( - children: [ - const Icon(Icons.email), - const SizedBox(width: 8.0,), - indexController.currentFeature[0].properties!["email"] != null && (indexController.currentFeature[0].properties!["email"] as String).isNotEmpty ? - getDetails(context, "email".tr, indexController.currentFeature[0].properties!["email"] ?? '') - : - const SizedBox(width: 0.0, height: 0,), - ], - ), - ), - Padding( - padding: const EdgeInsets.all(8.0), - child: Row( - children: [ - const Icon(Icons.language), - const SizedBox(width: 8.0,), - indexController.currentFeature[0].properties!["webcontents"] != null && (indexController.currentFeature[0].properties!["webcontents"] as String).isNotEmpty ? - getDetails(context, "web".tr, indexController.currentFeature[0].properties!["webcontents"] ?? '', isurl: true) - : - const SizedBox(width: 0.0, height: 0,), - ], - ), - ), - Padding( - padding: const EdgeInsets.all(8.0), - child: Row( - children: [ - const SizedBox(width: 8.0,), - indexController.currentFeature[0].properties!["remark"] != null && (indexController.currentFeature[0].properties!["remark"] as String).isNotEmpty ? - getDetails(context, "remarks".tr, indexController.currentFeature[0].properties!["remark"] ?? '', isurl: false) - : - const SizedBox(width: 0.0, height: 0,), - ], - ), - ), - // Text('${TextUtils.getDisplayText(indexController.currentFeature[0].properties!["cp"].toString())} - id: ${TextUtils.getDisplayText(indexController.currentFeature[0].properties!["checkin_point"].toString())}'), - ], - ), - ) - ), - const SizedBox(height: 60.0,) - ], - ), - ); + ], + ), + ); } - - - - Future wantToGo(BuildContext context)async { - + Future wantToGo(BuildContext context) async { bool _selected = false; - print('---target-- ${indexController.currentFeature[0].properties!["location_id"]}----'); - for(Destination d in destinationController.destinations){ + print( + '---target-- ${indexController.currentFeature[0].properties!["location_id"]}----'); + for (Destination d in destinationController.destinations) { print('---- ${d.location_id.toString()} ----'); - if(d.location_id == indexController.currentFeature[0].properties!["location_id"]){ + if (d.location_id == + indexController.currentFeature[0].properties!["location_id"]) { _selected = true; break; } } DatabaseHelper db = DatabaseHelper.instance; - return - Row( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - // indexController.rog_mode == 0 ? - // // IconButton( - // // icon: Icon(Icons.pin_drop_sharp, size: 32, color: _selected == true ? Colors.amber : Colors.blue,), - // // onPressed: (){ - // // if(_selected){ - // // // show remove from destination - // // Get.defaultDialog( - // // title: "本当にこのポイントを通過順から外しますか?", - // // middleText: "場所は目的地リストから削除されます", - // // backgroundColor: Colors.blue.shade300, - // // titleStyle: TextStyle(color: Colors.white), - // // middleTextStyle: TextStyle(color: Colors.white), - // // textConfirm: "はい", - // // textCancel: "いいえ", - // // cancelTextColor: Colors.white, - // // confirmTextColor: Colors.blue, - // // buttonColor: Colors.white, - // // barrierDismissible: false, - // // radius: 10, - // // content: Column( - // // children: [ - // // ], - // // ), - // // onConfirm: (){ - // // int _id = indexController.currentFeature[0].properties!["location_id"]; - // // Destination? d = destinationController.destinationById(_id); - // // print('--- des id is : ${d} -----'); - // // if(d != null) { - // // //print('--- des id is : ${d.location_id} -----'); - // // destinationController.deleteDestination(d); - // // Get.back(); - // // Get.back(); - // // Get.snackbar("追加した", "場所が削除されました"); - // // } - // // } - // // ); - // // return; - // // } - // // // show add to destination - // // Get.defaultDialog( - // // title: "この場所を登録してもよろしいですか", - // // middleText: "ロケーションがロガニング リストに追加されます", - // // backgroundColor: Colors.blue.shade300, - // // titleStyle: TextStyle(color: Colors.white), - // // middleTextStyle: TextStyle(color: Colors.white), - // // textConfirm: "はい", - // // textCancel: "いいえ", - // // cancelTextColor: Colors.white, - // // confirmTextColor: Colors.blue, - // // buttonColor: Colors.white, - // // barrierDismissible: false, - // // radius: 10, - // // content: Column( - // // children: [ - // // ], - // // ), - // // onConfirm: (){ - // // GeoJsonMultiPoint mp = indexController.currentFeature[0].geometry as GeoJsonMultiPoint; - // // LatLng pt = LatLng(mp.geoSerie!.geoPoints[0].latitude, mp.geoSerie!.geoPoints[0].longitude); + return Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + // indexController.rog_mode == 0 ? + // // IconButton( + // // icon: Icon(Icons.pin_drop_sharp, size: 32, color: _selected == true ? Colors.amber : Colors.blue,), + // // onPressed: (){ + // // if(_selected){ + // // // show remove from destination + // // Get.defaultDialog( + // // title: "本当にこのポイントを通過順から外しますか?", + // // middleText: "場所は目的地リストから削除されます", + // // backgroundColor: Colors.blue.shade300, + // // titleStyle: TextStyle(color: Colors.white), + // // middleTextStyle: TextStyle(color: Colors.white), + // // textConfirm: "はい", + // // textCancel: "いいえ", + // // cancelTextColor: Colors.white, + // // confirmTextColor: Colors.blue, + // // buttonColor: Colors.white, + // // barrierDismissible: false, + // // radius: 10, + // // content: Column( + // // children: [ + // // ], + // // ), + // // onConfirm: (){ + // // int _id = indexController.currentFeature[0].properties!["location_id"]; + // // Destination? d = destinationController.destinationById(_id); + // // print('--- des id is : ${d} -----'); + // // if(d != null) { + // // //print('--- des id is : ${d.location_id} -----'); + // // destinationController.deleteDestination(d); + // // Get.back(); + // // Get.back(); + // // Get.snackbar("追加した", "場所が削除されました"); + // // } + // // } + // // ); + // // return; + // // } + // // // show add to destination + // // Get.defaultDialog( + // // title: "この場所を登録してもよろしいですか", + // // middleText: "ロケーションがロガニング リストに追加されます", + // // backgroundColor: Colors.blue.shade300, + // // titleStyle: TextStyle(color: Colors.white), + // // middleTextStyle: TextStyle(color: Colors.white), + // // textConfirm: "はい", + // // textCancel: "いいえ", + // // cancelTextColor: Colors.white, + // // confirmTextColor: Colors.blue, + // // buttonColor: Colors.white, + // // barrierDismissible: false, + // // radius: 10, + // // content: Column( + // // children: [ + // // ], + // // ), + // // onConfirm: (){ + // // GeoJsonMultiPoint mp = indexController.currentFeature[0].geometry as GeoJsonMultiPoint; + // // LatLng pt = LatLng(mp.geoSerie!.geoPoints[0].latitude, mp.geoSerie!.geoPoints[0].longitude); - // // print("----- want to go sub location is ---- ${indexController.currentFeature[0].properties!["sub_loc_id"]} -----"); + // // print("----- want to go sub location is ---- ${indexController.currentFeature[0].properties!["sub_loc_id"]} -----"); - // // Destination dest = Destination( - // // name: indexController.currentFeature[0].properties!["location_name"], - // // address: indexController.currentFeature[0].properties!["address"], - // // phone: indexController.currentFeature[0].properties!["phone"], - // // email: indexController.currentFeature[0].properties!["email"], - // // webcontents: indexController.currentFeature[0].properties!["webcontents"], - // // videos: indexController.currentFeature[0].properties!["videos"], - // // category: indexController.currentFeature[0].properties!["category"], - // // series: 1, - // // lat: pt.latitude, - // // lon: pt.longitude, - // // sub_loc_id: indexController.currentFeature[0].properties!["sub_loc_id"], - // // location_id: indexController.currentFeature[0].properties!["location_id"], - // // list_order: 1, - // // photos: indexController.currentFeature[0].properties!["photos"], - // // checkin_radious: indexController.currentFeature[0].properties!["checkin_radius"], - // // auto_checkin: indexController.currentFeature[0].properties!["auto_checkin"] == true ? 1 : 0, - // // cp: indexController.currentFeature[0].properties!["cp"], - // // checkin_point: indexController.currentFeature[0].properties!["checkin_point"], - // // buy_point: indexController.currentFeature[0].properties!["buy_point"], - // // selected: false, - // // checkedin: false, - // // hidden_location: indexController.currentFeature[0].properties!["hidden_location"] == true ?1 : 0 - // // ); - // // destinationController.addDestinations(dest); - // // Get.back(); - // // Get.back(); - // // Get.snackbar("追加した", "場所が追加されました"); - // // } - // // ); + // // Destination dest = Destination( + // // name: indexController.currentFeature[0].properties!["location_name"], + // // address: indexController.currentFeature[0].properties!["address"], + // // phone: indexController.currentFeature[0].properties!["phone"], + // // email: indexController.currentFeature[0].properties!["email"], + // // webcontents: indexController.currentFeature[0].properties!["webcontents"], + // // videos: indexController.currentFeature[0].properties!["videos"], + // // category: indexController.currentFeature[0].properties!["category"], + // // series: 1, + // // lat: pt.latitude, + // // lon: pt.longitude, + // // sub_loc_id: indexController.currentFeature[0].properties!["sub_loc_id"], + // // location_id: indexController.currentFeature[0].properties!["location_id"], + // // list_order: 1, + // // photos: indexController.currentFeature[0].properties!["photos"], + // // checkin_radious: indexController.currentFeature[0].properties!["checkin_radius"], + // // auto_checkin: indexController.currentFeature[0].properties!["auto_checkin"] == true ? 1 : 0, + // // cp: indexController.currentFeature[0].properties!["cp"], + // // checkin_point: indexController.currentFeature[0].properties!["checkin_point"], + // // buy_point: indexController.currentFeature[0].properties!["buy_point"], + // // selected: false, + // // checkedin: false, + // // hidden_location: indexController.currentFeature[0].properties!["hidden_location"] == true ?1 : 0 + // // ); + // // destinationController.addDestinations(dest); + // // Get.back(); + // // Get.back(); + // // Get.snackbar("追加した", "場所が追加されました"); + // // } + // // ); - // // }, - // // ): - // // Container(), - const SizedBox(width: 8.0,) , - Obx((() => - - indexController.rog_mode == 1 ? - ElevatedButton( - onPressed: () async { - Destination dest = indexController.currentDestinationFeature[0]; - //print("------ curent destination is ${dest!.checkedIn}-------"); - destinationController.makeCheckin(dest, !dest.checkedin!, ""); - }, - child: indexController.currentDestinationFeature[0].checkedin == false ? - const Text("チェックイン") - : - const Text("チェックアウト") - ): - Container() - - ) - ), - ], - ), - ], - ); + // // }, + // // ): + // // Container(), + const SizedBox( + width: 8.0, + ), + Obx((() => indexController.rog_mode == 1 + ? ElevatedButton( + onPressed: () async { + Destination dest = + indexController.currentDestinationFeature[0]; + //print("------ curent destination is ${dest!.checkedIn}-------"); + destinationController.makeCheckin( + dest, !dest.checkedin!, ""); + }, + child: indexController + .currentDestinationFeature[0].checkedin == + false + ? const Text("チェックイン") + : const Text("チェックアウト")) + : Container())), + ], + ), + ], + ); } - Widget getCheckin(BuildContext context){ - + Widget getCheckin(BuildContext context) { //print("------ currentAction ----- ${indexController.currentAction}-----"); return Row( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Row( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - indexController.currentAction[0][0]["checkin"] == false ? - Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + indexController.currentAction[0][0]["checkin"] == false + ? Column( + children: [ + Row( + mainAxisSize: MainAxisSize.max, children: [ - Row( - mainAxisSize: MainAxisSize.max, - children: [ - ElevatedButton( - child: const Text("Image"), onPressed: (){ + ElevatedButton( + child: const Text("Image"), + onPressed: () { final ImagePicker _picker = ImagePicker(); - _picker.pickImage(source: ImageSource.camera).then((value){ + _picker + .pickImage(source: ImageSource.camera) + .then((value) { //print("----- image---- ${value!.path}"); }); - }, - ) - ], - ), - ElevatedButton( - onPressed: (){ - if(indexController.currentAction.isNotEmpty){ - //print(indexController.currentAction[0]); - indexController.currentAction[0][0]["checkin"] = true; - Map temp = Map.from(indexController.currentAction[0][0]); - indexController.currentAction.clear(); - //print("---temp---${temp}"); - indexController.currentAction.add([temp]); - } - indexController.makeAction(context); }, - child: Text("checkin".tr) - ) + ) ], - ) - : + ), ElevatedButton( - onPressed: (){ - if(indexController.currentAction.isNotEmpty){ - //print(indexController.currentAction[0]); - indexController.currentAction[0][0]["checkin"] = false; - Map temp = Map.from(indexController.currentAction[0][0]); - indexController.currentAction.clear(); - //print("---temp---${temp}"); - indexController.currentAction.add([temp]); - } - indexController.makeAction(context); - }, - - child: const Icon( - Icons.favorite, color: Colors.red) - - , - ) - ], - ) - ], - ); - } - - - - Widget getDetails(BuildContext context, String label, String text, {bool isurl=false}){ - return Row( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Text(label), - const SizedBox(width: 10.0,), - InkWell( - onTap: (){ - if(isurl){ - if(indexController.rog_mode == 0){ - _launchURL(indexController.currentFeature[0].properties!["webcontents"]); - } - else { - indexController.currentDestinationFeature[0].webcontents; - } - + onPressed: () { + if (indexController.currentAction.isNotEmpty) { + //print(indexController.currentAction[0]); + indexController.currentAction[0][0]["checkin"] = + true; + Map temp = + Map.from( + indexController.currentAction[0][0]); + indexController.currentAction.clear(); + //print("---temp---${temp}"); + indexController.currentAction.add([temp]); + } + indexController.makeAction(context); + }, + child: Text("checkin".tr)) + ], + ) + : ElevatedButton( + onPressed: () { + if (indexController.currentAction.isNotEmpty) { + //print(indexController.currentAction[0]); + indexController.currentAction[0][0]["checkin"] = false; + Map temp = Map.from( + indexController.currentAction[0][0]); + indexController.currentAction.clear(); + //print("---temp---${temp}"); + indexController.currentAction.add([temp]); } + indexController.makeAction(context); }, - child: SizedBox( - width: MediaQuery.of(context).size.width - 160, - child: Text(text, - style: TextStyle( - color: isurl ? Colors.blue : Colors.black, - ), - ), - ), - ), - ], - ); + child: const Icon(Icons.favorite, color: Colors.red), + ) + ], + ) + ], + ); } - - - + Widget getDetails(BuildContext context, String label, String text, + {bool isurl = false}) { + return Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Text(label), + const SizedBox( + width: 10.0, + ), + InkWell( + onTap: () { + if (isurl) { + if (indexController.rog_mode == 0) { + _launchURL(indexController + .currentFeature[0].properties!["webcontents"]); + } else { + indexController.currentDestinationFeature[0].webcontents; + } + } + }, + child: SizedBox( + width: MediaQuery.of(context).size.width - 160, + child: Text( + text, + style: TextStyle( + color: isurl ? Colors.blue : Colors.black, + ), + ), + ), + ), + ], + ); + } } \ No newline at end of file diff --git a/lib/widgets/bottom_sheet_widget.dart b/lib/widgets/bottom_sheet_widget.dart index af1460f..ab504e0 100644 --- a/lib/widgets/bottom_sheet_widget.dart +++ b/lib/widgets/bottom_sheet_widget.dart @@ -369,7 +369,7 @@ class BottomSheetWidget extends StatelessWidget { ], ), ), - Row( + const Row( children: [ SizedBox(height: 60.0,), ], diff --git a/lib/widgets/destination_widget.dart b/lib/widgets/destination_widget.dart index 62f8059..4d2d34e 100644 --- a/lib/widgets/destination_widget.dart +++ b/lib/widgets/destination_widget.dart @@ -113,7 +113,7 @@ class DestinationWidget extends StatelessWidget { buttonColor: Colors.white, barrierDismissible: false, radius: 10, - content: Column( + content: const Column( children: [ ], ), diff --git a/pubspec.lock b/pubspec.lock index be846c0..f3f13eb 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -13,34 +13,26 @@ packages: dependency: transitive description: name: archive - sha256: "793964beb8e297995714326628881437d4211f10fc8843534bab54129cd896ee" + sha256: "49b1fad315e57ab0bbc15bcbb874e83116a1d78f77ebd500a4af6c9407d6b28e" url: "https://pub.dev" source: hosted - version: "3.3.1" + version: "3.3.8" args: dependency: transitive description: name: args - sha256: b003c3098049a51720352d219b0bb5f219b60fbfb68e7a4748139a06a5676515 + sha256: eef6c46b622e0494a36c5a12d10d77fb4e855501a91c1b9ef9339326e58f0596 url: "https://pub.dev" source: hosted - version: "2.3.1" + version: "2.4.2" async: dependency: "direct main" description: name: async - sha256: bfe67ef28df125b7dddcea62755991f807aa39a2492a23e1550161692950bbe0 + sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c" url: "https://pub.dev" source: hosted - version: "2.10.0" - bezier: - dependency: transitive - description: - name: bezier - sha256: "90d2a89d3a3b20522361244bafb51861210e941bd2f307c4122877d3781d1339" - url: "https://pub.dev" - source: hosted - version: "1.2.0" + version: "2.11.0" boolean_selector: dependency: transitive description: @@ -53,66 +45,66 @@ packages: dependency: transitive description: name: camera - sha256: "12c497020e3778f83191ccfad126dfa31106de91accba6c89cc68a0d30b41f0e" + sha256: f63f2687fb1795c36f7c57b18a03071880eabb0fd8b5291b0fcd3fb979cb0fb1 url: "https://pub.dev" source: hosted - version: "0.10.0+3" + version: "0.10.5+4" camera_android: dependency: transitive description: name: camera_android - sha256: bee8d441a307444ea90a8a2c3ea760cdec45a6908497c75559bd4142c6930256 + sha256: ed4f645848074166fc3b8e20350f83ca07e09a2becc1e185040ee561f955d4df url: "https://pub.dev" source: hosted - version: "0.10.0+3" + version: "0.10.8+8" camera_avfoundation: dependency: transitive description: name: camera_avfoundation - sha256: "43021a22067b8be6d1fc3d9559d503766a7e6ca968c189bfbf79d4ede0bc5f7c" + sha256: "718b60ed2e22b4067fe6e2c0e9ebe2856c2de5c8b1289ba95d10db85b0b00bc2" url: "https://pub.dev" source: hosted - version: "0.9.8+6" + version: "0.9.13+4" camera_camera: dependency: "direct main" description: name: camera_camera - sha256: e769c37ca6c86a2bcdbeb3fa2ec876c705a4a477f7afb7df0be3247b6ad451ae + sha256: fd2cffd6a015f588a5fef7e829ad8dff0789ccba0e9faea980d184a13b91e818 url: "https://pub.dev" source: hosted - version: "3.0.0-dev" + version: "3.0.0" camera_platform_interface: dependency: transitive description: name: camera_platform_interface - sha256: "645cef76744c79ffc82cdc158a00fb6f1ff23b3ae7dba569fe061e2ce155798a" + sha256: "8734d1c682f034bdb12d0d6ff379b0535a9b8e44266b530025bf8266d6a62f28" url: "https://pub.dev" source: hosted - version: "2.2.2" + version: "2.5.2" camera_web: dependency: transitive description: name: camera_web - sha256: "0c4bdd73e28affc36e7693d948bd90415e7b02bef3feea761dd18405e9485e2a" + sha256: d4c2c571c7af04f8b10702ca16bb9ed2a26e64534171e8f75c9349b2c004d8f1 url: "https://pub.dev" source: hosted - version: "0.3.0+1" + version: "0.3.2+3" characters: dependency: transitive description: name: characters - sha256: e6a326c8af69605aec75ed6c187d06b349707a27fbff8222ca9cc2cff167975c + sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605" url: "https://pub.dev" source: hosted - version: "1.2.1" + version: "1.3.0" checked_yaml: dependency: transitive description: name: checked_yaml - sha256: dd007e4fb8270916820a0d66e24f619266b60773cddd082c6439341645af2659 + sha256: feb6bed21949061731a7a75fc5d2aa727cf160b91af9a3e464c5e3a32e28b5ff url: "https://pub.dev" source: hosted - version: "2.0.1" + version: "2.0.3" circular_menu: dependency: "direct main" description: @@ -125,10 +117,10 @@ packages: dependency: transitive description: name: cli_util - sha256: "66f86e916d285c1a93d3b79587d94bd71984a66aac4ff74e524cfa7877f1395c" + sha256: b8db3080e59b2503ca9e7922c3df2072cf13992354d5e944074ffa836fba43b7 url: "https://pub.dev" source: hosted - version: "0.3.5" + version: "0.4.0" clock: dependency: transitive description: @@ -141,50 +133,66 @@ packages: dependency: "direct main" description: name: collection - sha256: cfc915e6923fe5ce6e153b0723c753045de46de1b4d63771530504004a45fae0 + sha256: f092b211a4319e98e5ff58223576de6c2803db36221657b46c82574721240687 url: "https://pub.dev" source: hosted - version: "1.17.0" + version: "1.17.2" connectivity_plus: dependency: "direct main" description: name: connectivity_plus - sha256: "745ebcccb1ef73768386154428a55250bc8d44059c19fd27aecda2a6dc013a22" + sha256: "77a180d6938f78ca7d2382d2240eb626c0f6a735d0bfdce227d8ffb80f95c48b" url: "https://pub.dev" source: hosted - version: "3.0.2" + version: "4.0.2" connectivity_plus_platform_interface: dependency: transitive description: name: connectivity_plus_platform_interface - sha256: b8795b9238bf83b64375f63492034cb3d8e222af4d9ce59dda085edf038fa06f + sha256: cf1d1c28f4416f8c654d7dc3cd638ec586076255d407cef3ddbdaf178272a71a url: "https://pub.dev" source: hosted - version: "1.2.3" + version: "1.2.4" + convert: + dependency: transitive + description: + name: convert + sha256: "0f08b14755d163f6e2134cb58222dd25ea2a2ee8a195e53983d57c075324d592" + url: "https://pub.dev" + source: hosted + version: "3.1.1" cross_file: dependency: transitive description: name: cross_file - sha256: "0b0036e8cccbfbe0555fd83c1d31a6f30b77a96b598b35a5d36dd41f718695e9" + sha256: fd832b5384d0d6da4f6df60b854d33accaaeb63aa9e10e736a87381f08dee2cb url: "https://pub.dev" source: hosted - version: "0.3.3+4" + version: "0.3.3+5" crypto: dependency: transitive description: name: crypto - sha256: aa274aa7774f8964e4f4f38cc994db7b6158dd36e9187aaceaddc994b35c6c67 + sha256: ff625774173754681d66daaf4a448684fb04b78f902da9cb3d308c19cc5e8bab url: "https://pub.dev" source: hosted - version: "3.0.2" + version: "3.0.3" + csslib: + dependency: transitive + description: + name: csslib + sha256: "706b5707578e0c1b4b7550f64078f0a0f19dec3f50a178ffae7006b0a9ca58fb" + url: "https://pub.dev" + source: hosted + version: "1.0.0" cupertino_icons: dependency: "direct main" description: name: cupertino_icons - sha256: e35129dc44c9118cee2a5603506d823bab99c68393879edb440e0090d07586be + sha256: d57953e10f9f8327ce64a508a355f0b1ec902193f66288e8cb5070e7c47eeb2d url: "https://pub.dev" source: hosted - version: "1.0.5" + version: "1.0.6" dbus: dependency: transitive description: @@ -213,10 +221,10 @@ packages: dependency: transitive description: name: ffi - sha256: a38574032c5f1dd06c4aee541789906c12ccaab8ba01446e800d9c5b79c4a978 + sha256: "7bf0adc28a23d395f19f3f1eb21dd7cfd1dd9f8e1c50051c069122e6853bc878" url: "https://pub.dev" source: hosted - version: "2.0.1" + version: "2.1.0" file: dependency: transitive description: @@ -225,27 +233,43 @@ packages: url: "https://pub.dev" source: hosted version: "6.1.4" - file_picker: + file_selector_linux: dependency: transitive description: - name: file_picker - sha256: b85eb92b175767fdaa0c543bf3b0d1f610fe966412ea72845fe5ba7801e763ff + name: file_selector_linux + sha256: "045d372bf19b02aeb69cacf8b4009555fb5f6f0b7ad8016e5f46dd1387ddd492" url: "https://pub.dev" source: hosted - version: "5.2.10" + version: "0.9.2+1" + file_selector_macos: + dependency: transitive + description: + name: file_selector_macos + sha256: "182c3f8350cee659f7b115e956047ee3dc672a96665883a545e81581b9a82c72" + url: "https://pub.dev" + source: hosted + version: "0.9.3+2" + file_selector_platform_interface: + dependency: transitive + description: + name: file_selector_platform_interface + sha256: "0aa47a725c346825a2bd396343ce63ac00bda6eff2fbc43eabe99737dede8262" + url: "https://pub.dev" + source: hosted + version: "2.6.1" + file_selector_windows: + dependency: transitive + description: + name: file_selector_windows + sha256: d3547240c20cabf205c7c7f01a50ecdbc413755814d6677f3cb366f04abcead0 + url: "https://pub.dev" + source: hosted + version: "0.9.3+1" flutter: dependency: "direct main" description: flutter source: sdk version: "0.0.0" - flutter_background: - dependency: transitive - description: - name: flutter_background - sha256: "035c31a738509d67ee70bbf174e5aa7db462c371e838ec8259700c5c4e7ca17f" - url: "https://pub.dev" - source: hosted - version: "1.2.0" flutter_breadcrumb: dependency: "direct main" description: @@ -266,18 +290,34 @@ packages: dependency: "direct main" description: name: flutter_image - sha256: fa47ea2392de894efd41026b20c166af085d03077ddb8ac6dd73eb4c23bb97ca + sha256: b41c6cbf9462d8cbdeeb7b5dd84c7bca5176e9e4d6e8b968290e371ab758cc0c url: "https://pub.dev" source: hosted - version: "4.1.4" + version: "4.1.8" flutter_keyboard_visibility: dependency: transitive description: name: flutter_keyboard_visibility - sha256: "40d25e00e511fc7e0735d79002db28c2d4736773e5933c45bf239ad1fb80661c" + sha256: "4983655c26ab5b959252ee204c2fffa4afeb4413cd030455194ec0caa3b8e7cb" url: "https://pub.dev" source: hosted - version: "5.3.0" + version: "5.4.1" + flutter_keyboard_visibility_linux: + dependency: transitive + description: + name: flutter_keyboard_visibility_linux + sha256: "6fba7cd9bb033b6ddd8c2beb4c99ad02d728f1e6e6d9b9446667398b2ac39f08" + url: "https://pub.dev" + source: hosted + version: "1.0.0" + flutter_keyboard_visibility_macos: + dependency: transitive + description: + name: flutter_keyboard_visibility_macos + sha256: c5c49b16fff453dfdafdc16f26bdd8fb8d55812a1d50b0ce25fc8d9f2e53d086 + url: "https://pub.dev" + source: hosted + version: "1.0.0" flutter_keyboard_visibility_platform_interface: dependency: transitive description: @@ -294,94 +334,78 @@ packages: url: "https://pub.dev" source: hosted version: "2.0.0" + flutter_keyboard_visibility_windows: + dependency: transitive + description: + name: flutter_keyboard_visibility_windows + sha256: fc4b0f0b6be9b93ae527f3d527fb56ee2d918cd88bbca438c478af7bcfd0ef73 + url: "https://pub.dev" + source: hosted + version: "1.0.0" flutter_launcher_icons: dependency: "direct main" description: name: flutter_launcher_icons - sha256: a9de6706cd844668beac27c0aed5910fa0534832b3c2cad61a5fd977fce82a5d + sha256: "526faf84284b86a4cb36d20a5e45147747b7563d921373d4ee0559c54fcdbcea" url: "https://pub.dev" source: hosted - version: "0.10.0" + version: "0.13.1" flutter_lints: dependency: "direct dev" description: name: flutter_lints - sha256: b543301ad291598523947dc534aaddc5aaad597b709d2426d3a0e0d44c5cb493 + sha256: a25a15ebbdfc33ab1cd26c63a6ee519df92338a9c10f122adda92938253bef04 url: "https://pub.dev" source: hosted - version: "1.0.4" - flutter_local_notifications: - dependency: transitive - description: - name: flutter_local_notifications - sha256: f222919a34545931e47b06000836b5101baeffb0e6eb5a4691d2d42851740dd9 - url: "https://pub.dev" - source: hosted - version: "12.0.4" - flutter_local_notifications_linux: - dependency: transitive - description: - name: flutter_local_notifications_linux - sha256: "3c6d6db334f609a92be0c0915f40871ec56f5d2adf01e77ae364162c587c0ca8" - url: "https://pub.dev" - source: hosted - version: "2.0.0" - flutter_local_notifications_platform_interface: - dependency: transitive - description: - name: flutter_local_notifications_platform_interface - sha256: "5ec1feac5f7f7d9266759488bc5f76416152baba9aa1b26fe572246caa00d1ab" - url: "https://pub.dev" - source: hosted - version: "6.0.0" + version: "2.0.3" flutter_map: dependency: "direct main" description: name: flutter_map - sha256: "59dfd14267b691bea55760786b47d3172d47cdcc0d79ff930746a5ad123491b8" + sha256: "52c65a977daae42f9aae6748418dd1535eaf27186e9bac9bf431843082bc75a3" url: "https://pub.dev" source: hosted - version: "3.1.0" + version: "4.0.0" flutter_map_location_marker: dependency: "direct main" description: name: flutter_map_location_marker - sha256: c65b31e0759ca36326318a281a76dfb13c782d438b5cf622b11059b752ced1e2 + sha256: "9757dceadda71a53d2d4004cff4d53a29210086083bdfebf44a1c4feb07f8eb1" url: "https://pub.dev" source: hosted - version: "5.3.0" + version: "6.0.0" flutter_map_marker_cluster: dependency: "direct main" description: name: flutter_map_marker_cluster - sha256: "63d8658a4d1357679f591308b9567d1d66cb23ba37a2b7792ff48ff009553283" + sha256: "362088b16311b6743a7930857129ec6c7c807ecca777fe1033c0ad6688339e36" url: "https://pub.dev" source: hosted - version: "1.1.0" + version: "1.1.1" flutter_map_marker_popup: dependency: transitive description: name: flutter_map_marker_popup - sha256: f5a40d006e07154a213345300217e8f995ddd3cd280dbe8dc8964f47e7d7fe7c + sha256: "7cf30fab25ffe1ba04a9e0fbe1227f44a83c73256d4d70be1c26cf141ce5c41d" url: "https://pub.dev" source: hosted - version: "4.0.3" + version: "4.1.0" flutter_map_tile_caching: dependency: "direct main" description: name: flutter_map_tile_caching - sha256: "5ca82be70ba7c945bc18ed35a4b30701649f2c2c72e6b363f88824392c638429" + sha256: "48ab77adc7adf70ec682db737b68dd5ac804e78a2e834b951e0d9735a6923971" url: "https://pub.dev" source: hosted - version: "6.2.0" + version: "8.0.1" flutter_plugin_android_lifecycle: dependency: transitive description: name: flutter_plugin_android_lifecycle - sha256: "60fc7b78455b94e6de2333d2f95196d32cf5c22f4b0b0520a628804cb463503b" + sha256: f185ac890306b5779ecbd611f52502d8d4d63d27703ef73161ca0407e815f02c url: "https://pub.dev" source: hosted - version: "2.0.7" + version: "2.0.16" flutter_polyline_points: dependency: "direct main" description: @@ -399,10 +423,10 @@ packages: dependency: "direct main" description: name: flutter_typeahead - sha256: "99e6dbb1094fe4fd40a4199c44ce110f5e232bc60ac6d3599719095ebba2923c" + sha256: a3539f7a90246b152f569029dedcf0b842532d3f2a440701b520e0bf2acbcf42 url: "https://pub.dev" source: hosted - version: "4.1.0" + version: "4.6.2" flutter_web_plugins: dependency: transitive description: flutter @@ -412,10 +436,10 @@ packages: dependency: transitive description: name: font_awesome_flutter - sha256: "8f0ce0204bd0cafa8631536a6f3b7d05d9c16cdc6e8bd807843f917027c5cefd" + sha256: "5fb789145cae1f4c3245c58b3f8fb287d055c26323879eab57a7bf0cfd1e45f3" url: "https://pub.dev" source: hosted - version: "10.2.1" + version: "10.5.0" geodesy: dependency: transitive description: @@ -444,26 +468,26 @@ packages: dependency: transitive description: name: geolocator_android - sha256: b06c72853c993ae533f482d81a12805d7a441f5231d9668718bc7131d7464082 + sha256: "835ff5b4888a2f8eba128996494faf9c5d422785322a81dc0565b99e0f6c379d" url: "https://pub.dev" source: hosted - version: "4.2.0" + version: "4.2.2" geolocator_apple: dependency: transitive description: name: geolocator_apple - sha256: "1b17544d250bbfebd2f36157f9ce094b0b07967441c1010243d6ea04f6f5bfe8" + sha256: "36527c555f4c425f7d8fa8c7c07d67b78e3ff7590d40448051959e1860c1cfb4" url: "https://pub.dev" source: hosted - version: "2.2.1" + version: "2.2.7" geolocator_platform_interface: dependency: transitive description: name: geolocator_platform_interface - sha256: "8c10ba5c825abdcc337ba918fbc1d3a5a2b006affe6ba610e3143cd32f54388d" + sha256: af4d69231452f9620718588f41acc4cb58312368716bfff2e92e770b46ce6386 url: "https://pub.dev" source: hosted - version: "4.0.6" + version: "4.0.7" geolocator_web: dependency: transitive description: @@ -476,10 +500,10 @@ packages: dependency: transitive description: name: geolocator_windows - sha256: f5911c88e23f48b598dd506c7c19eff0e001645bdc03bb6fecb9f4549208354d + sha256: "4f4218f122a6978d0ad655fa3541eea74c67417440b09f0657238810d5af6bdc" url: "https://pub.dev" source: hosted - version: "0.1.1" + version: "0.1.3" geopoint: dependency: transitive description: @@ -500,42 +524,74 @@ packages: dependency: "direct main" description: name: google_api_availability - sha256: a1f58c5213abae549fb1e1451bc68eb499da7033039f77bc289fd6faca384295 + sha256: "3e9548cfd991d983d11425a2436d5bd957d048c279cc9e145ffe3f36fd847385" url: "https://pub.dev" source: hosted - version: "3.0.1" + version: "5.0.0" + google_api_availability_android: + dependency: transitive + description: + name: google_api_availability_android + sha256: d95429ae78083585c312de2c6578085e7d53d100a94656d691bce0bb0ce435be + url: "https://pub.dev" + source: hosted + version: "1.0.1" + google_api_availability_platform_interface: + dependency: transitive + description: + name: google_api_availability_platform_interface + sha256: "65b7da62fe5b582bb3d508628ad827d36d890710ea274766a992a56fa5420da6" + url: "https://pub.dev" + source: hosted + version: "1.0.1" + google_maps: + dependency: transitive + description: + name: google_maps + sha256: "555d5d736339b0478e821167ac521c810d7b51c3b2734e6802a9f046b64ea37a" + url: "https://pub.dev" + source: hosted + version: "6.3.0" google_maps_flutter: dependency: "direct main" description: name: google_maps_flutter - sha256: "07f81e2d26a4dd2664e3beed547c75eb24b780c5c8519cd42bc0137308a1e7f6" + sha256: d4914cb38b3dcb62c39c085d968d434de0f8050f00f4d9f5ba4a7c7e004934cb url: "https://pub.dev" source: hosted - version: "2.2.0" + version: "2.5.0" google_maps_flutter_android: dependency: transitive description: name: google_maps_flutter_android - sha256: "7e0234029f1e2531203ea735e0bf69a0a25a6c6d62a19b7cac756f87062c8f5a" + sha256: e6cb018169e49332f88d23b1d2119b09e8ab4e7d3a1b889a1b7b3fd113e034ba url: "https://pub.dev" source: hosted - version: "2.3.0" + version: "2.5.1" google_maps_flutter_ios: dependency: transitive description: name: google_maps_flutter_ios - sha256: "71213e497600e0c67cf7a096f643e58a72ed36334456c32c7ae0a6b4698018df" + sha256: "2a595c9789070786c654e9772ec0d1bb759ae37d2dd776291af5398531274e06" url: "https://pub.dev" source: hosted - version: "2.1.11" + version: "2.3.1" google_maps_flutter_platform_interface: dependency: transitive description: name: google_maps_flutter_platform_interface - sha256: "0a91acaa7ab6a438f428efe49f145a2b48f18ff039301ee2232696e18bf78784" + sha256: a3e9e6896501e566d902c6c69f010834d410ef4b7b5c18b90c77e871c86b7907 url: "https://pub.dev" source: hosted - version: "2.2.2" + version: "2.4.1" + google_maps_flutter_web: + dependency: transitive + description: + name: google_maps_flutter_web + sha256: f893d1542c6562bc8299ef768fbbe92ade83c220ab3209b9477ec9f81ad585e4 + url: "https://pub.dev" + source: hosted + version: "0.5.4+2" google_maps_webservice: dependency: "direct main" description: @@ -544,94 +600,142 @@ packages: url: "https://pub.dev" source: hosted version: "0.0.20-nullsafety.5" + html: + dependency: transitive + description: + name: html + sha256: "3a7812d5bcd2894edf53dfaf8cd640876cf6cef50a8f238745c8b8120ea74d3a" + url: "https://pub.dev" + source: hosted + version: "0.15.4" http: dependency: transitive description: name: http - sha256: "6aa2946395183537c8b880962d935877325d6a09a2867c3970c05c0fed6ac482" + sha256: "5895291c13fa8a3bd82e76d5627f69e0d85ca6a30dcac95c4ea19a5d555879c2" url: "https://pub.dev" source: hosted - version: "0.13.5" + version: "0.13.6" + http2: + dependency: transitive + description: + name: http2 + sha256: "38db0c4aa9f1cd238a5d2e86aa0cc7cc91c77e0c6c94ba64bbe85e4ff732a952" + url: "https://pub.dev" + source: hosted + version: "2.2.0" http_parser: dependency: transitive description: name: http_parser - sha256: db3060f22889f3d9d55f6a217565486737037eec3609f7f3eca4d0c67ee0d8a0 + sha256: "2aa08ce0341cc9b354a498388e30986515406668dbcc4f7c950c3e715496693b" url: "https://pub.dev" source: hosted - version: "4.0.1" + version: "4.0.2" + http_plus: + dependency: transitive + description: + name: http_plus + sha256: "6e2af403727ea5bd0a6a45edbe8e1ebc9d5d49b38a93893e1c00e2a307035773" + url: "https://pub.dev" + source: hosted + version: "0.2.2" image: dependency: transitive description: name: image - sha256: "9d2c5f73435a70a936d317769ee8e7ef480e37674b9f2bce95ea98969a307855" + sha256: a72242c9a0ffb65d03de1b7113bc4e189686fc07c7147b8b41811d0dd0e0d9bf url: "https://pub.dev" source: hosted - version: "3.2.0" + version: "4.0.17" image_picker: dependency: "direct main" description: name: image_picker - sha256: f3712cd190227fb92e0960cb0ce22928ba042c7183b16864ade83b259adf8ea6 + sha256: "7d7f2768df2a8b0a3cefa5ef4f84636121987d403130e70b17ef7e2cf650ba84" url: "https://pub.dev" source: hosted - version: "0.8.5+3" + version: "1.0.4" image_picker_android: dependency: transitive description: name: image_picker_android - sha256: "822f71a53336bf1e638dbf955047080ca49ba0197f52c4fece9cf584c368648a" + sha256: d32a997bcc4ee135aebca8e272b7c517927aa65a74b9c60a81a2764ef1a0462d url: "https://pub.dev" source: hosted - version: "0.8.5+3" + version: "0.8.7+5" image_picker_for_web: dependency: transitive description: name: image_picker_for_web - sha256: "60f306ffbdcada4bc8b2691acc420258a1b758e102c87c4f94fb568d640f0e0e" + sha256: "50bc9ae6a77eea3a8b11af5eb6c661eeb858fdd2f734c2a4fd17086922347ef7" url: "https://pub.dev" source: hosted - version: "2.1.8" + version: "3.0.1" image_picker_ios: dependency: transitive description: name: image_picker_ios - sha256: "6ad501265cc47dbbf78620656edf505088fdea644c7b905a72790c3c7e92b508" + sha256: c5538cacefacac733c724be7484377923b476216ad1ead35a0d2eadcdc0fc497 url: "https://pub.dev" source: hosted - version: "0.8.6" + version: "0.8.8+2" + image_picker_linux: + dependency: transitive + description: + name: image_picker_linux + sha256: "4ed1d9bb36f7cd60aa6e6cd479779cc56a4cb4e4de8f49d487b1aaad831300fa" + url: "https://pub.dev" + source: hosted + version: "0.2.1+1" + image_picker_macos: + dependency: transitive + description: + name: image_picker_macos + sha256: "3f5ad1e8112a9a6111c46d0b57a7be2286a9a07fc6e1976fdf5be2bd31d4ff62" + url: "https://pub.dev" + source: hosted + version: "0.2.1+1" image_picker_platform_interface: dependency: transitive description: name: image_picker_platform_interface - sha256: cedb2650709f066ee83fd65a1d99b6ff33e5adf98cea376426dd33c2b22bf6ad + sha256: ed9b00e63977c93b0d2d2b343685bed9c324534ba5abafbb3dfbd6a780b1b514 url: "https://pub.dev" source: hosted - version: "2.6.1" - ini: + version: "2.9.1" + image_picker_windows: dependency: transitive description: - name: ini - sha256: "12a76c53591ffdf86d1265be3f986888a6dfeb34a85957774bc65912d989a173" + name: image_picker_windows + sha256: "6ad07afc4eb1bc25f3a01084d28520496c4a3bb0cb13685435838167c9dcedeb" url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "0.2.1+1" intl: dependency: "direct main" description: name: intl - sha256: "910f85bce16fb5c6f614e117efa303e85a1731bb0081edf3604a2ae6e9a3cc91" + sha256: "3bc132a9dbce73a7e4a21a17d06e1878839ffbf975568bc875c60537824b0c4d" url: "https://pub.dev" source: hosted - version: "0.17.0" - is_lock_screen: - dependency: "direct main" + version: "0.18.1" + isar: + dependency: transitive description: - name: is_lock_screen - sha256: "7f45c22b1bb4bd9849aa699bc45b5b9473ada262a4266e1d7d51babdf50c0c83" + name: isar + sha256: "99165dadb2cf2329d3140198363a7e7bff9bbd441871898a87e26914d25cf1ea" url: "https://pub.dev" source: hosted - version: "2.0.0" + version: "3.1.0+1" + isar_flutter_libs: + dependency: transitive + description: + name: isar_flutter_libs + sha256: bc6768cc4b9c61aabff77152e7f33b4b17d2fc93134f7af1c3dd51500fe8d5e8 + url: "https://pub.dev" + source: hosted + version: "3.1.0+1" iso: dependency: transitive description: @@ -644,34 +748,42 @@ packages: dependency: transitive description: name: js - sha256: "5528c2f391ededb7775ec1daa69e65a2d61276f7552de2b5f7b8d34ee9fd4ab7" + sha256: f2c445dce49627136094980615a031419f7f3eb393237e4ecd97ac15dea343f3 url: "https://pub.dev" source: hosted - version: "0.6.5" + version: "0.6.7" + js_wrapping: + dependency: transitive + description: + name: js_wrapping + sha256: e385980f7c76a8c1c9a560dfb623b890975841542471eade630b2871d243851c + url: "https://pub.dev" + source: hosted + version: "0.7.4" json_annotation: dependency: transitive description: name: json_annotation - sha256: cb314f00b2488de7bc575207e54402cd2f92363f333a7933fd1b0631af226baa + sha256: b10a7b2ff83d83c777edba3c6a0f97045ddadd56c944e1a23a3fdf43a1bf4467 url: "https://pub.dev" source: hosted - version: "4.6.0" + version: "4.8.1" latlong2: dependency: "direct main" description: name: latlong2 - sha256: "408993a0e3f46e79ce1f129e4cb0386eef6d48dfa6394939ecacfbd7049154ec" + sha256: "08ef7282ba9f76e8495e49e2dc4d653015ac929dce5f92b375a415d30b407ea0" url: "https://pub.dev" source: hosted - version: "0.8.1" + version: "0.8.2" lints: dependency: transitive description: name: lints - sha256: a2c3d198cb5ea2e179926622d433331d8b58374ab8f29cdda6e863bd62fd369c + sha256: "0a217c6c989d21039f1498c3ed9f3ed71b354e69873f13a8dfc3c9fe76f1b452" url: "https://pub.dev" source: hosted - version: "1.0.1" + version: "2.1.1" lists: dependency: transitive description: @@ -684,42 +796,42 @@ packages: dependency: transitive description: name: logger - sha256: "5076f09225f91dc49289a4ccb92df2eeea9ea01cf7c26d49b3a1f04c6a49eec1" + sha256: "7ad7215c15420a102ec687bb320a7312afd449bac63bfb1c60d9787c27b9767f" url: "https://pub.dev" source: hosted - version: "1.1.0" + version: "1.4.0" matcher: dependency: transitive description: name: matcher - sha256: "16db949ceee371e9b99d22f88fa3a73c4e59fd0afed0bd25fc336eb76c198b72" + sha256: "1803e76e6653768d64ed8ff2e1e67bea3ad4b923eb5c56a295c3e634bad5960e" url: "https://pub.dev" source: hosted - version: "0.12.13" + version: "0.12.16" material_color_utilities: dependency: transitive description: name: material_color_utilities - sha256: d92141dc6fe1dad30722f9aa826c7fbc896d021d792f80678280601aff8cf724 + sha256: "9528f2f296073ff54cb9fee677df673ace1218163c3bc7628093e7eed5203d41" url: "https://pub.dev" source: hosted - version: "0.2.0" + version: "0.5.0" material_design_icons_flutter: dependency: "direct main" description: name: material_design_icons_flutter - sha256: "8c54c21cf336052193559abc64715e4885d6c9220a6dbdfc561a087266cc5385" + sha256: "6f986b7a51f3ad4c00e33c5c84e8de1bdd140489bbcdc8b66fc1283dad4dea5a" url: "https://pub.dev" source: hosted - version: "5.0.6996" + version: "7.0.7296" meta: dependency: "direct main" description: name: meta - sha256: "6c268b42ed578a53088d834796959e4a1814b5e9e164f147f580a386e5decf42" + sha256: "3c74dbf8763d36539f114c799d8a2d87343b5067e9d796ca22b5eb8437090ee3" url: "https://pub.dev" source: hosted - version: "1.8.0" + version: "1.9.1" mgrs_dart: dependency: transitive description: @@ -744,14 +856,6 @@ packages: url: "https://pub.dev" source: hosted version: "3.0.0-pre" - move_to_background: - dependency: transitive - description: - name: move_to_background - sha256: "00caad17a6ce149910777131503f43f8ed80025681f94684e3a6a87d979b914c" - url: "https://pub.dev" - source: hosted - version: "1.0.2" nested: dependency: transitive description: @@ -772,66 +876,58 @@ packages: dependency: transitive description: name: path - sha256: db9d4f58c908a4ba5953fcee2ae317c94889433e5024c27ce74a37f94267945b + sha256: "8829d8a55c13fc0e37127c29fedf290c102f4e40ae94ada574091fe0ff96c917" url: "https://pub.dev" source: hosted - version: "1.8.2" + version: "1.8.3" path_provider: dependency: "direct main" description: name: path_provider - sha256: "050e8e85e4b7fecdf2bb3682c1c64c4887a183720c802d323de8a5fd76d372dd" + sha256: a1aa8aaa2542a6bc57e381f132af822420216c80d4781f7aa085ca3229208aaa url: "https://pub.dev" source: hosted - version: "2.0.11" + version: "2.1.1" path_provider_android: dependency: transitive description: name: path_provider_android - sha256: "4d5542667150f5b779ba411dd5dc0b674a85d1355e45bda2877e0e82f4ad08d8" + sha256: "6b8b19bd80da4f11ce91b2d1fb931f3006911477cec227cce23d3253d80df3f1" url: "https://pub.dev" source: hosted - version: "2.0.20" - path_provider_ios: + version: "2.2.0" + path_provider_foundation: dependency: transitive description: - name: path_provider_ios - sha256: "03d639406f5343478352433f00d3c4394d52dac8df3d847869c5e2333e0bbce8" + name: path_provider_foundation + sha256: "19314d595120f82aca0ba62787d58dde2cc6b5df7d2f0daf72489e38d1b57f2d" url: "https://pub.dev" source: hosted - version: "2.0.11" + version: "2.3.1" path_provider_linux: dependency: transitive description: name: path_provider_linux - sha256: ab0987bf95bc591da42dffb38c77398fc43309f0b9b894dcc5d6f40c4b26c379 + sha256: f7a1fe3a634fe7734c8d3f2766ad746ae2a2884abe22e241a8b301bf5cac3279 url: "https://pub.dev" source: hosted - version: "2.1.7" - path_provider_macos: - dependency: transitive - description: - name: path_provider_macos - sha256: "2a97e7fbb7ae9dcd0dfc1220a78e9ec3e71da691912e617e8715ff2a13086ae8" - url: "https://pub.dev" - source: hosted - version: "2.0.6" + version: "2.2.1" path_provider_platform_interface: dependency: transitive description: name: path_provider_platform_interface - sha256: "27dc7a224fcd07444cb5e0e60423ccacea3e13cf00fc5282ac2c918132da931d" + sha256: "94b1e0dd80970c1ce43d5d4e050a9918fce4f4a775e6142424c30a29a363265c" url: "https://pub.dev" source: hosted - version: "2.0.4" + version: "2.1.1" path_provider_windows: dependency: transitive description: name: path_provider_windows - sha256: bcabbe399d4042b8ee687e17548d5d3f527255253b4a639f5f8d2094a9c2b45c + sha256: "8bc9f22eee8690981c22aa7fc602f5c85b497a6fb2ceb35ee5a5e5ed85ad8170" url: "https://pub.dev" source: hosted - version: "2.1.3" + version: "2.2.1" pedantic: dependency: transitive description: @@ -844,66 +940,82 @@ packages: dependency: "direct main" description: name: permission_handler - sha256: ae51809c535fd765061c7384a67bc24d304d24cfc455c59e2f6a5cec9a37fc9c + sha256: "63e5216aae014a72fe9579ccd027323395ce7a98271d9defa9d57320d001af81" url: "https://pub.dev" source: hosted - version: "10.0.0" + version: "10.4.3" permission_handler_android: dependency: transitive description: name: permission_handler_android - sha256: "692e5dd690cd9e978e1cefa67d97bddd3a7f4748ddac6cd8bbd1a354a6a1869f" + sha256: d74e77a5ecd38649905db0a7d05ef16bed42ff263b9efb73ed794317c5764ec3 url: "https://pub.dev" source: hosted - version: "10.0.0" + version: "10.3.4" permission_handler_apple: dependency: transitive description: name: permission_handler_apple - sha256: "6367799be76d1fe70ffe2df7f025abfe28818b450f550621778995badbebf519" + sha256: "99e220bce3f8877c78e4ace901082fb29fa1b4ebde529ad0932d8d664b34f3f5" url: "https://pub.dev" source: hosted - version: "9.0.4" + version: "9.1.4" permission_handler_platform_interface: dependency: transitive description: name: permission_handler_platform_interface - sha256: ca16451bfdc6d26693d10b37b2d81370bdf3f0318422f3eecfd6004f5bd7d21f + sha256: "7c6b1500385dd1d2ca61bb89e2488ca178e274a69144d26bbd65e33eae7c02a9" url: "https://pub.dev" source: hosted - version: "3.7.0" + version: "3.11.3" permission_handler_windows: dependency: transitive description: name: permission_handler_windows - sha256: "40ad5ab4d3c65d75c7f3a069065c77503aae19a1cf01ba246d43489e14f1b90c" + sha256: cc074aace208760f1eee6aa4fae766b45d947df85bc831cde77009cdb4720098 url: "https://pub.dev" source: hosted - version: "0.1.0" + version: "0.1.3" petitparser: dependency: transitive description: name: petitparser - sha256: "2ebb289dc4764ec397f5cd3ca9881c6d17196130a7d646ed022a0dd9c2e25a71" + sha256: cb3798bef7fc021ac45b308f4b51208a152792445cce0448c9a4ba5879dd8750 url: "https://pub.dev" source: hosted - version: "5.0.0" + version: "5.4.0" platform: dependency: transitive description: name: platform - sha256: "4a451831508d7d6ca779f7ac6e212b4023dd5a7d08a27a63da33756410e32b76" + sha256: ae68c7bfcd7383af3629daafb32fb4e8681c7154428da4febcff06200585f102 url: "https://pub.dev" source: hosted - version: "3.1.0" + version: "3.1.2" plugin_platform_interface: dependency: transitive description: name: plugin_platform_interface - sha256: "075f927ebbab4262ace8d0b283929ac5410c0ac4e7fc123c76429564facfb757" + sha256: da3fdfeccc4d4ff2da8f8c556704c08f912542c5fb3cf2233ed75372384a034d url: "https://pub.dev" source: hosted - version: "2.1.2" + version: "2.1.6" + pointer_interceptor: + dependency: transitive + description: + name: pointer_interceptor + sha256: "7626e034489820fd599380d2bb4d3f4a0a5e3529370b62bfce53ab736b91adb2" + url: "https://pub.dev" + source: hosted + version: "0.9.3+6" + pointycastle: + dependency: transitive + description: + name: pointycastle + sha256: "7c1e5f0d23c9016c5bbd8b1473d0d3fb3fc851b876046039509e18e0c7485f2c" + url: "https://pub.dev" + source: hosted + version: "3.7.3" polylabel: dependency: transitive description: @@ -920,14 +1032,6 @@ packages: url: "https://pub.dev" source: hosted version: "1.0.4" - process: - dependency: transitive - description: - name: process - sha256: "53fd8db9cec1d37b0574e12f07520d582019cb6c44abf5479a01505099a34a09" - url: "https://pub.dev" - source: hosted - version: "4.2.4" proj4dart: dependency: "direct main" description: @@ -956,90 +1060,82 @@ packages: dependency: transitive description: name: quiver - sha256: "93982981971e812c94d4a6fa3a57b89f9ec12b38b6380cd3c1370c3b01e4580e" + sha256: b1c1ac5ce6688d77f65f3375a9abb9319b3cb32486bdc7a1e0fdf004d7ba4e47 url: "https://pub.dev" source: hosted - version: "3.1.0" + version: "3.2.1" rename: dependency: "direct main" description: name: rename - sha256: "2e3f2800712e00c66fee8eb6285d290c418e99fe3f69ca794d9fa09654bb005e" + sha256: b0d9407186d834ad73aba9938da95a20208c4be99f151d9f376ac62a08d08bad url: "https://pub.dev" source: hosted - version: "2.0.1" - share_plus: + version: "2.1.1" + sanitize_html: dependency: transitive description: - name: share_plus - sha256: f36abf36434577a6192d3829e4d2cf954f438be7021394135b537411567dcb73 + name: sanitize_html + sha256: "0a445f19bbaa196f5a4f93461aa066b94e6e025622eb1e9bc77872a5e25233a5" url: "https://pub.dev" source: hosted - version: "6.1.0" - share_plus_platform_interface: - dependency: transitive - description: - name: share_plus_platform_interface - sha256: "0c6e61471bd71b04a138b8b588fa388e66d8b005e6f2deda63371c5c505a0981" - url: "https://pub.dev" - source: hosted - version: "3.2.1" + version: "2.0.0" shared_preferences: dependency: "direct main" description: name: shared_preferences - sha256: ee6257848f822b8481691f20c3e6d2bfee2e9eccb2a3d249907fcfb198c55b41 + sha256: b7f41bad7e521d205998772545de63ff4e6c97714775902c199353f8bf1511ac url: "https://pub.dev" source: hosted - version: "2.0.18" + version: "2.2.1" shared_preferences_android: dependency: transitive description: name: shared_preferences_android - sha256: ad423a80fe7b4e48b50d6111b3ea1027af0e959e49d485712e134863d9c1c521 + sha256: "8568a389334b6e83415b6aae55378e158fbc2314e074983362d20c562780fb06" url: "https://pub.dev" source: hosted - version: "2.0.17" + version: "2.2.1" shared_preferences_foundation: dependency: transitive description: name: shared_preferences_foundation - sha256: "1e755f8583229f185cfca61b1d80fb2344c9d660e1c69ede5450d8f478fa5310" + sha256: "7bf53a9f2d007329ee6f3df7268fd498f8373602f943c975598bbb34649b62a7" url: "https://pub.dev" source: hosted - version: "2.1.5" + version: "2.3.4" shared_preferences_linux: dependency: transitive description: name: shared_preferences_linux - sha256: "3a59ed10890a8409ad0faad7bb2957dab4b92b8fbe553257b05d30ed8af2c707" + sha256: c2eb5bf57a2fe9ad6988121609e47d3e07bb3bdca5b6f8444e4cf302428a128a url: "https://pub.dev" source: hosted - version: "2.1.5" + version: "2.3.1" shared_preferences_platform_interface: dependency: transitive description: name: shared_preferences_platform_interface - sha256: "824bfd02713e37603b2bdade0842e47d56e7db32b1dcdd1cae533fb88e2913fc" + sha256: d4ec5fc9ebb2f2e056c617112aa75dcf92fc2e4faaf2ae999caa297473f75d8a url: "https://pub.dev" source: hosted - version: "2.1.1" + version: "2.3.1" shared_preferences_web: dependency: transitive description: name: shared_preferences_web - sha256: "0dc2633f215a3d4aa3184c9b2c5766f4711e4e5a6b256e62aafee41f89f1bfb8" + sha256: d762709c2bbe80626ecc819143013cc820fa49ca5e363620ee20a8b15a3e3daf url: "https://pub.dev" source: hosted - version: "2.0.6" + version: "2.2.1" shared_preferences_windows: dependency: transitive description: name: shared_preferences_windows - sha256: "71bcd669bb9cdb6b39f22c4a7728b6d49e934f6cba73157ffa5a54f1eed67436" + sha256: f763a101313bd3be87edffe0560037500967de9c394a714cd598d945517f694f url: "https://pub.dev" source: hosted - version: "2.1.5" + version: "2.3.1" sky_engine: dependency: transitive description: flutter @@ -1057,26 +1153,26 @@ packages: dependency: transitive description: name: source_span - sha256: dd904f795d4b4f3b870833847c461801f6750a9fa8e61ea5ac53f9422b31f250 + sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c" url: "https://pub.dev" source: hosted - version: "1.9.1" + version: "1.10.0" sqflite: dependency: "direct main" description: name: sqflite - sha256: b3a8307b9519af28518e271e548594bdc435225fc77e8fb22e71a296c69281cf + sha256: "591f1602816e9c31377d5f008c2d9ef7b8aca8941c3f89cc5fd9d84da0c38a9a" url: "https://pub.dev" source: hosted - version: "2.0.3+1" + version: "2.3.0" sqflite_common: dependency: transitive description: name: sqflite_common - sha256: b504fc5b4576a05586a0bb99d9bcc0d37a78d9d5ed68b96c361d5d3a8e538275 + sha256: "1b92f368f44b0dee2425bb861cfa17b6f6cf3961f762ff6f941d20b33355660a" url: "https://pub.dev" source: hosted - version: "2.2.1+1" + version: "2.5.0" stack_trace: dependency: transitive description: @@ -1097,10 +1193,10 @@ packages: dependency: transitive description: name: stream_transform - sha256: ed464977cb26a1f41537e177e190c67223dbd9f4f683489b6ab2e5d211ec564e + sha256: "14a00e794c7c11aa145a170587321aedce29769c08d7f58b1d141da75e3b1c6f" url: "https://pub.dev" source: hosted - version: "2.0.0" + version: "2.1.0" string_scanner: dependency: transitive description: @@ -1113,10 +1209,10 @@ packages: dependency: transitive description: name: synchronized - sha256: "7b530acd9cb7c71b0019a1e7fa22c4105e675557a4400b6a401c71c5e0ade1ac" + sha256: "5fcbd27688af6082f5abd611af56ee575342c30e87541d0245f7ff99faa02c60" url: "https://pub.dev" source: hosted - version: "3.0.0+3" + version: "3.1.0" term_glyph: dependency: transitive description: @@ -1129,10 +1225,10 @@ packages: dependency: transitive description: name: test_api - sha256: ad540f65f92caa91bf21dfc8ffb8c589d6e4dc0c2267818b4cc2792857706206 + sha256: "75760ffd7786fffdfb9597c35c5b27eaeec82be8edfb6d71d32651128ed7aab8" url: "https://pub.dev" source: hosted - version: "0.4.16" + version: "0.6.0" timeline_tile: dependency: "direct main" description: @@ -1141,38 +1237,30 @@ packages: url: "https://pub.dev" source: hosted version: "2.0.0" - timezone: - dependency: transitive - description: - name: timezone - sha256: "1cfd8ddc2d1cfd836bc93e67b9be88c3adaeca6f40a00ca999104c30693cdca0" - url: "https://pub.dev" - source: hosted - version: "0.9.2" transparent_image: dependency: "direct main" description: name: transparent_image - sha256: e566a616922a781489f4d91cc939b1b3203b6e4a093317805f2f82f0bb0f8dec + sha256: e8991d955a2094e197ca24c645efec2faf4285772a4746126ca12875e54ca02f url: "https://pub.dev" source: hosted - version: "2.0.0" + version: "2.0.1" tuple: dependency: "direct main" description: name: tuple - sha256: fe3ae4f0dca3f9aac0888e2e0d117b642ce283a82d7017b54136290c0a3b0dd3 + sha256: a97ce2013f240b2f3807bcbaf218765b6f301c3eff91092bcfa23a039e7dd151 url: "https://pub.dev" source: hosted - version: "2.0.0" + version: "2.0.2" typed_data: dependency: transitive description: name: typed_data - sha256: "26f87ade979c47a150c9eaab93ccd2bebe70a27dc0b4b29517f2904f04eb11a5" + sha256: facc8d6582f16042dd49f2463ff1bd6e2c9ef9f3d5da3d9b087e244a7b564b3c url: "https://pub.dev" source: hosted - version: "1.3.1" + version: "1.3.2" unicode: dependency: transitive description: @@ -1185,66 +1273,66 @@ packages: dependency: "direct main" description: name: url_launcher - sha256: "4f0d5f9bf7efba3da5a7ff03bd33cc898c84bac978c068e1c94483828e709592" + sha256: "47e208a6711459d813ba18af120d9663c20bdf6985d6ad39fe165d2538378d27" url: "https://pub.dev" source: hosted - version: "6.1.5" + version: "6.1.14" url_launcher_android: dependency: transitive description: name: url_launcher_android - sha256: "9e262cbec69233717d5198f4d0b0c4961fa027e3685ba425442c43c64f38bb9b" + sha256: b04af59516ab45762b2ca6da40fa830d72d0f6045cd97744450b73493fa76330 url: "https://pub.dev" source: hosted - version: "6.0.19" + version: "6.1.0" url_launcher_ios: dependency: transitive description: name: url_launcher_ios - sha256: "6ba7dddee26c9fae27c9203c424631109d73c8fa26cfa7bc3e35e751cb87f62e" + sha256: "7c65021d5dee51813d652357bc65b8dd4a6177082a9966bc8ba6ee477baa795f" url: "https://pub.dev" source: hosted - version: "6.0.17" + version: "6.1.5" url_launcher_linux: dependency: transitive description: name: url_launcher_linux - sha256: "360fa359ab06bcb4f7c5cd3123a2a9a4d3364d4575d27c4b33468bd4497dd094" + sha256: b651aad005e0cb06a01dbd84b428a301916dc75f0e7ea6165f80057fee2d8e8e url: "https://pub.dev" source: hosted - version: "3.0.1" + version: "3.0.6" url_launcher_macos: dependency: transitive description: name: url_launcher_macos - sha256: a9b3ea9043eabfaadfa3fb89de67a11210d85569086d22b3854484beab8b3978 + sha256: b55486791f666e62e0e8ff825e58a023fd6b1f71c49926483f1128d3bbd8fe88 url: "https://pub.dev" source: hosted - version: "3.0.1" + version: "3.0.7" url_launcher_platform_interface: dependency: transitive description: name: url_launcher_platform_interface - sha256: "80b860b31a11ebbcbe51b8fe887efc204f3af91522f3b51bcda4622d276d2120" + sha256: "95465b39f83bfe95fcb9d174829d6476216f2d548b79c38ab2506e0458787618" url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.1.5" url_launcher_web: dependency: transitive description: name: url_launcher_web - sha256: "5669882643b96bb6d5786637cac727c6e918a790053b09245fd4513b8a07df2a" + sha256: "2942294a500b4fa0b918685aff406773ba0a4cd34b7f42198742a94083020ce5" url: "https://pub.dev" source: hosted - version: "2.0.13" + version: "2.0.20" url_launcher_windows: dependency: transitive description: name: url_launcher_windows - sha256: e3c3b16d3104260c10eea3b0e34272aaa57921f83148b0619f74c2eced9b7ef1 + sha256: "95fef3129dc7cfaba2bc3d5ba2e16063bb561fc6d78e63eee16162bc70029069" url: "https://pub.dev" source: hosted - version: "3.0.1" + version: "3.0.8" uuid: dependency: transitive description: @@ -1265,18 +1353,26 @@ packages: dependency: transitive description: name: watcher - sha256: "6a7f46926b01ce81bfc339da6a7f20afbe7733eff9846f6d6a5466aa4c6667c0" + sha256: "3d2ad6751b3c16cf07c7fca317a1413b3f26530319181b37e3b9039b84fc01d8" url: "https://pub.dev" source: hosted - version: "1.0.2" + version: "1.1.0" + web: + dependency: transitive + description: + name: web + sha256: dc8ccd225a2005c1be616fe02951e2e342092edf968cf0844220383757ef8f10 + url: "https://pub.dev" + source: hosted + version: "0.1.4-beta" win32: dependency: transitive description: name: win32 - sha256: "1952a663c0e34fbde55916010d54bbb249bf5f2583113c497602f0ee01c6faa4" + sha256: "9e82a402b7f3d518fb9c02d0e9ae45952df31b9bf34d77baf19da2de03fc2aaa" url: "https://pub.dev" source: hosted - version: "3.0.0" + version: "5.0.7" wkt_parser: dependency: transitive description: @@ -1289,26 +1385,26 @@ packages: dependency: transitive description: name: xdg_directories - sha256: "11541eedefbcaec9de35aa82650b695297ce668662bbd6e3911a7fabdbde589f" + sha256: "589ada45ba9e39405c198fe34eb0f607cddb2108527e658136120892beac46d2" url: "https://pub.dev" source: hosted - version: "0.2.0+2" + version: "1.0.3" xml: dependency: transitive description: name: xml - sha256: ac0e3f4bf00ba2708c33fbabbbe766300e509f8c82dbd4ab6525039813f7e2fb + sha256: "5bc72e1e45e941d825fd7468b9b4cc3b9327942649aeb6fc5cdbf135f0a86e84" url: "https://pub.dev" source: hosted - version: "6.1.0" + version: "6.3.0" yaml: dependency: transitive description: name: yaml - sha256: "23812a9b125b48d4007117254bca50abb6c712352927eece9e155207b1db2370" + sha256: "75769501ea3489fca56601ff33454fe45507ea3bfb014161abc3b43ae25989d5" url: "https://pub.dev" source: hosted - version: "3.1.1" + version: "3.1.2" sdks: - dart: ">=2.18.0 <3.0.0" - flutter: ">=3.7.0" + dart: ">=3.1.0 <4.0.0" + flutter: ">=3.13.0" diff --git a/pubspec.yaml b/pubspec.yaml index 611ad28..6c34234 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -18,7 +18,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev version: 1.0.16+16 environment: - sdk: ">=2.16.0 <3.0.0" + sdk: '>=3.1.0 <4.0.0' # Dependencies specify other packages that your package needs in order to work. # To automatically upgrade your package dependencies to the latest versions @@ -39,7 +39,7 @@ dependencies: flutter_map: any geolocator: ^9.0.1 permission_handler: ^10.0.0 - google_api_availability: ^3.0.1 + google_api_availability: ^5.0.0 tuple: ^2.0.0 latlong2: ^0.8.1 positioned_tap_detector_2: ^1.0.4 @@ -53,9 +53,9 @@ dependencies: path_provider: ^2.0.8 flutter_map_location_marker: any flutter_map_marker_cluster: any - material_design_icons_flutter: ^5.0.6595 + material_design_icons_flutter: ^7.0.7296 #google_fonts: ^2.1.1 - image_picker: ^0.8.4+4 + image_picker: ^1.0.4 #geojson_vi: ^2.0.7 geojson: ^1.0.0 url_launcher: ^6.0.20 @@ -66,16 +66,16 @@ dependencies: flutter_polyline_points: ^1.0.0 google_maps_webservice: ^0.0.19 flutter_typeahead: ^4.0.0 - flutter_launcher_icons: ^0.10.0 + flutter_launcher_icons: ^0.13.1 rename: ^2.0.1 circular_menu: ^2.0.1 camera_camera: ^3.0.0-dev - intl: ^0.17.0 + intl: ^0.18.1 modal_bottom_sheet: ^3.0.0-pre - connectivity_plus: ^3.0.2 - flutter_map_tile_caching: ^6.2.0 + connectivity_plus: ^4.0.2 + flutter_map_tile_caching: ^8.0.1 shared_preferences: ^2.0.15 - is_lock_screen: ^2.0.0 + flutter_icons: android: true @@ -92,7 +92,7 @@ dev_dependencies: # activated in the `analysis_options.yaml` file located at the root of your # package. See that file for information about deactivating specific lint # rules and activating additional ones. - flutter_lints: ^1.0.0 + flutter_lints: ^2.0.3 # For information on the generic Dart part of this file, see the # following page: https://dart.dev/tools/pub/pubspec diff --git a/windows/flutter/generated_plugin_registrant.cc b/windows/flutter/generated_plugin_registrant.cc index bf5dc77..bc61c87 100644 --- a/windows/flutter/generated_plugin_registrant.cc +++ b/windows/flutter/generated_plugin_registrant.cc @@ -7,20 +7,23 @@ #include "generated_plugin_registrant.h" #include +#include #include +#include #include -#include #include void RegisterPlugins(flutter::PluginRegistry* registry) { ConnectivityPlusWindowsPluginRegisterWithRegistrar( registry->GetRegistrarForPlugin("ConnectivityPlusWindowsPlugin")); + FileSelectorWindowsRegisterWithRegistrar( + registry->GetRegistrarForPlugin("FileSelectorWindows")); GeolocatorWindowsRegisterWithRegistrar( registry->GetRegistrarForPlugin("GeolocatorWindows")); + IsarFlutterLibsPluginRegisterWithRegistrar( + registry->GetRegistrarForPlugin("IsarFlutterLibsPlugin")); PermissionHandlerWindowsPluginRegisterWithRegistrar( registry->GetRegistrarForPlugin("PermissionHandlerWindowsPlugin")); - SharePlusWindowsPluginCApiRegisterWithRegistrar( - registry->GetRegistrarForPlugin("SharePlusWindowsPluginCApi")); UrlLauncherWindowsRegisterWithRegistrar( registry->GetRegistrarForPlugin("UrlLauncherWindows")); } diff --git a/windows/flutter/generated_plugins.cmake b/windows/flutter/generated_plugins.cmake index 17df843..1834cc0 100644 --- a/windows/flutter/generated_plugins.cmake +++ b/windows/flutter/generated_plugins.cmake @@ -4,9 +4,10 @@ list(APPEND FLUTTER_PLUGIN_LIST connectivity_plus + file_selector_windows geolocator_windows + isar_flutter_libs permission_handler_windows - share_plus url_launcher_windows )