Compare commits
	
		
			1 Commits
		
	
	
		
			v0.0.37
			...
			f62fa43653
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| f62fa43653 | 
| @@ -13,6 +13,6 @@ EXPOSE 8000 | ||||
| # Set environment variables used by the deployment. These can be overridden by the user using this image. | ||||
| ENV NUM_WORKERS=1 | ||||
| ENV OSM_CACHE_DIR=/cache | ||||
| ENV MEMCACHED_HOST=none | ||||
| ENV MEMCACHED_HOST_PATH=none | ||||
|  | ||||
| CMD fastapi run src/main.py --port 8000 --workers $NUM_WORKERS | ||||
|   | ||||
| @@ -26,6 +26,6 @@ logging.config.dictConfig(config) | ||||
| if os.getenv('DEBUG', False): | ||||
|     logging.getLogger().setLevel(logging.DEBUG) | ||||
|  | ||||
| MEMCACHE_HOST = os.getenv('MEMCACHE_HOST', None) | ||||
| if MEMCACHE_HOST == "none": | ||||
|     MEMCACHE_HOST = None | ||||
| MEMCACHED_HOST_PATH = os.getenv('MEMCACHED_HOST_PATH', None) | ||||
| if MEMCACHED_HOST_PATH == "none": | ||||
|     MEMCACHED_HOST_PATH = None | ||||
|   | ||||
| @@ -12,7 +12,7 @@ class DummyClient: | ||||
|         return self._data[key] | ||||
|  | ||||
|  | ||||
| if constants.MEMCACHE_HOST is None: | ||||
| if constants.MEMCACHED_HOST is None: | ||||
|     client = DummyClient() | ||||
| else: | ||||
|     client = Client(constants.MEMCACHE_HOST, timeout=1) | ||||
|     client = Client(constants.MEMCACHED_HOST_PATH, timeout=1) | ||||
|   | ||||
| @@ -61,7 +61,7 @@ android { | ||||
|  | ||||
|     defaultConfig { | ||||
|         // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). | ||||
|         applicationId "com.example.anyway" | ||||
|         applicationId "com.anydev.anyway" | ||||
|         // You can update the following values to match your application needs. | ||||
|         // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration. | ||||
|         // Minimum Android version for Google Maps SDK | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| package com.example.anyway | ||||
| package com.anydev.anyway | ||||
|  | ||||
| import io.flutter.embedding.android.FlutterActivity | ||||
|  | ||||
|   | ||||
| @@ -1,9 +1,10 @@ | ||||
| import 'dart:collection'; | ||||
|  | ||||
| import 'package:flutter/material.dart'; | ||||
| import 'package:anyway/structs/landmark.dart'; | ||||
| import 'package:anyway/structs/trip.dart'; | ||||
| import 'package:flutter/material.dart'; | ||||
| import 'package:google_maps_flutter/google_maps_flutter.dart'; | ||||
| import 'package:the_widget_marker/the_widget_marker.dart'; | ||||
|  | ||||
| class MapWidget extends StatefulWidget { | ||||
|  | ||||
| @@ -25,6 +26,7 @@ class _MapWidgetState extends State<MapWidget> { | ||||
|     zoom: 11.0, | ||||
|   ); | ||||
|   Set<Marker> markers = <Marker>{}; | ||||
|   final GlobalKey globalKey = GlobalKey(); | ||||
|    | ||||
|  | ||||
|   void _onMapCreated(GoogleMapController controller) async { | ||||
| @@ -49,28 +51,81 @@ class _MapWidgetState extends State<MapWidget> { | ||||
|     Trip? trip = await widget.trip; | ||||
|     LinkedList<Landmark>? landmarks = trip?.landmarks; | ||||
|     if (landmarks != null){ | ||||
|       setState(() { | ||||
|         for (Landmark landmark in landmarks) { | ||||
|           markers.add(Marker( | ||||
|             markerId: MarkerId(landmark.name), | ||||
|             position: LatLng(landmark.location[0], landmark.location[1]), | ||||
|             infoWindow: InfoWindow(title: landmark.name, snippet: landmark.type.name), | ||||
|           )); | ||||
|         } | ||||
|       }); | ||||
|       for (Landmark landmark in landmarks) { | ||||
|         markers.add(Marker( | ||||
|           markerId: MarkerId(landmark.name), | ||||
|           position: LatLng(landmark.location[0], landmark.location[1]), | ||||
|           // infoWindow: InfoWindow(title: landmark.name, snippet: landmark.type.name), | ||||
|           icon: await MarkerIcon.widgetToIcon(globalKey), | ||||
|         )); | ||||
|       } | ||||
|       setState(() {}); | ||||
|     } | ||||
|   } | ||||
|  | ||||
|  | ||||
|   @override | ||||
|   Widget build(BuildContext context) { | ||||
|     return GoogleMap( | ||||
|       onMapCreated: _onMapCreated, | ||||
|       initialCameraPosition: _cameraPosition, | ||||
|       onCameraIdle: _onCameraIdle, | ||||
|       // onLongPress: , | ||||
|       markers: markers, | ||||
|       cloudMapId: '41c21ac9b81dbfd8', | ||||
|     return Stack( | ||||
|       children: [ | ||||
|         MyMarker(globalKey), | ||||
|  | ||||
|         GoogleMap( | ||||
|               onMapCreated: _onMapCreated, | ||||
|               initialCameraPosition: _cameraPosition, | ||||
|               onCameraIdle: _onCameraIdle, | ||||
|               // onLongPress: , | ||||
|               markers: markers, | ||||
|               cloudMapId: '41c21ac9b81dbfd8', | ||||
|             ) | ||||
|       ] | ||||
|     ); | ||||
|   } | ||||
| } | ||||
|  | ||||
|  | ||||
| class MyMarker extends StatelessWidget { | ||||
|   // declare a global key and get it trough Constructor | ||||
|  | ||||
|   MyMarker(this.globalKeyMyWidget); | ||||
|   final GlobalKey globalKeyMyWidget; | ||||
|  | ||||
|   @override | ||||
|   Widget build(BuildContext context) { | ||||
|     // This returns an outlined circle, with an icon corresponding to the landmark type | ||||
|     // As a small dot, the number of the landmark is displayed in the top right | ||||
|     return RepaintBoundary( | ||||
|       key: globalKeyMyWidget, | ||||
|       child: Stack( | ||||
|         children: [ | ||||
|           Container( | ||||
|             width: 75, | ||||
|             height: 75, | ||||
|             decoration: BoxDecoration( | ||||
|               gradient: LinearGradient( | ||||
|                 begin: Alignment.topLeft, | ||||
|                 end: Alignment.bottomRight, | ||||
|                 colors: [Colors.red, Colors.yellow] | ||||
|               ), | ||||
|               shape: BoxShape.circle, | ||||
|               border: Border.all(color: Colors.black, width: 5), | ||||
|             ), | ||||
|             child: Icon(Icons.location_on, color: Colors.black, size: 50), | ||||
|           ), | ||||
|           Positioned( | ||||
|             top: 0, | ||||
|             right: 0, | ||||
|             child: Container( | ||||
|               padding: EdgeInsets.all(5), | ||||
|               decoration: BoxDecoration( | ||||
|                 color: Theme.of(context).primaryColor, | ||||
|                 shape: BoxShape.circle, | ||||
|               ), | ||||
|               child: Text('1', style: TextStyle(color: Colors.white, fontSize: 20)), | ||||
|             ), | ||||
|           ), | ||||
|         ], | ||||
|       ), | ||||
|     ); | ||||
|   } | ||||
| } | ||||
| @@ -1,5 +1,11 @@ | ||||
|  | ||||
| import 'package:anyway/layout.dart'; | ||||
| import 'package:anyway/structs/preferences.dart'; | ||||
| import 'package:anyway/utils/fetch_trip.dart'; | ||||
| import 'package:flutter/material.dart'; | ||||
| import "package:anyway/structs/trip.dart"; | ||||
|  | ||||
|  | ||||
|  | ||||
| class NewTripPage extends StatefulWidget { | ||||
|   const NewTripPage({Key? key}) : super(key: key); | ||||
| @@ -9,22 +15,71 @@ class NewTripPage extends StatefulWidget { | ||||
| } | ||||
|  | ||||
| class _NewTripPageState extends State<NewTripPage> { | ||||
|   final GlobalKey<FormState> _formKey = GlobalKey<FormState>(); | ||||
|   final TextEditingController latController = TextEditingController(); | ||||
|   final TextEditingController lonController = TextEditingController(); | ||||
|  | ||||
|   @override | ||||
|   Widget build(BuildContext context) { | ||||
|     return Scaffold( | ||||
|       appBar: AppBar( | ||||
|         title: const Text('New Trip'), | ||||
|       ), | ||||
|       body: Center( | ||||
|         child: Column( | ||||
|           mainAxisAlignment: MainAxisAlignment.center, | ||||
|           children: <Widget>[ | ||||
|             const Text( | ||||
|               'Create a new trip', | ||||
|       body: Form( | ||||
|         key: _formKey, | ||||
|         child:  | ||||
|           Padding( | ||||
|             padding: const EdgeInsets.all(15.0), | ||||
|             child: Column( | ||||
|               crossAxisAlignment: CrossAxisAlignment.start, | ||||
|                | ||||
|               children: <Widget>[ | ||||
|                 TextFormField( | ||||
|                   decoration: const InputDecoration(hintText: 'Lat'), | ||||
|                   controller: latController, | ||||
|                   validator: (String? value) { | ||||
|                     if (value == null || value.isEmpty || double.tryParse(value) == null){ | ||||
|                       return 'Please enter a floating point number'; | ||||
|                     } | ||||
|                     return null; | ||||
|                   }, | ||||
|                 ), | ||||
|                 TextFormField( | ||||
|                   decoration: const InputDecoration(hintText: 'Lon'), | ||||
|                   controller: lonController, | ||||
|  | ||||
|                   validator: (String? value) { | ||||
|                     if (value == null || value.isEmpty || double.tryParse(value) == null){ | ||||
|                       return 'Please enter a floating point number'; | ||||
|                     } | ||||
|                     return null; | ||||
|                   }, | ||||
|                 ), | ||||
|                 Divider(height: 15, color: Colors.transparent), | ||||
|                 ElevatedButton( | ||||
|                   onPressed: () { | ||||
|                     if (_formKey.currentState!.validate()) { | ||||
|                       List<double> startPoint = [ | ||||
|                         double.parse(latController.text), | ||||
|                         double.parse(lonController.text) | ||||
|                       ]; | ||||
|                       UserPreferences preferences = UserPreferences(); | ||||
|                       preferences.load(); | ||||
|                       Future<Trip> trip = fetchTrip(startPoint, preferences); | ||||
|                         Navigator.of(context).push( | ||||
|                           MaterialPageRoute( | ||||
|                             builder: (context) => BasePage(mainScreen: "map", trip: trip) | ||||
|                           ) | ||||
|                         ); | ||||
|                     } | ||||
|                   }, | ||||
|                   child: const Text('Create trip'), | ||||
|                 ), | ||||
|               ], | ||||
|             ), | ||||
|           ], | ||||
|         ), | ||||
|       ), | ||||
|           ) | ||||
|          | ||||
|       ) | ||||
|     ); | ||||
|   } | ||||
| } | ||||
| } | ||||
|   | ||||
| @@ -1,14 +0,0 @@ | ||||
| import "package:anyway/structs/landmark.dart"; | ||||
|  | ||||
|  | ||||
| class Route { | ||||
|   final String name; | ||||
|   final Duration duration; | ||||
|   final List<Landmark> landmarks; | ||||
|  | ||||
|   Route({ | ||||
|     required this.name, | ||||
|     required this.duration, | ||||
|     required this.landmarks | ||||
|   }); | ||||
| } | ||||
| @@ -1,54 +0,0 @@ | ||||
| import "package:anyway/structs/landmark.dart"; | ||||
| import "package:anyway/structs/linked_landmarks.dart"; | ||||
| import 'package:dio/dio.dart'; | ||||
|  | ||||
| final dio = Dio(); | ||||
|  | ||||
| // Future<List<Landmark>> fetchLandmarks() async { | ||||
| //   // final response = await http | ||||
| //   //     .get(Uri.parse('https://nav.kluster.moll.re/v1/destination/1')); | ||||
|  | ||||
| //   // if (response.statusCode == 200) { | ||||
| //     // If the server did return a 200 OK response, | ||||
| //     // then parse the JSON. | ||||
| //     List<Landmark> landmarks = [ | ||||
| //       // 48°51′29.6″N 2°17′40.2″E | ||||
| //       Landmark( | ||||
| //         name: "Eiffel Tower", | ||||
| //         location: [48.51296, 2.17402], | ||||
| //         type: LandmarkType(name: "Tower"), | ||||
| //         imageURL: "https://upload.wikimedia.org/wikipedia/commons/thumb/a/a8/Tour_Eiffel_Wikimedia_Commons.jpg/1037px-Tour_Eiffel_Wikimedia_Commons.jpg" | ||||
| //         ), | ||||
| //       Landmark( | ||||
| //         name: "Notre Dame Cathedral", | ||||
| //         location: [48.8530, 2.3498], | ||||
| //         type: LandmarkType(name: "Monument"), | ||||
| //         imageURL: "https://upload.wikimedia.org/wikipedia/commons/thumb/f/f7/Notre-Dame_de_Paris%2C_4_October_2017.jpg/440px-Notre-Dame_de_Paris%2C_4_October_2017.jpg" | ||||
| //         ), | ||||
| //       Landmark( | ||||
| //         name: "Louvre palace", | ||||
| //         location: [48.8606, 2.3376], | ||||
| //         type: LandmarkType(name: "Museum"), | ||||
| //         imageURL: "https://upload.wikimedia.org/wikipedia/commons/thumb/6/66/Louvre_Museum_Wikimedia_Commons.jpg/540px-Louvre_Museum_Wikimedia_Commons.jpg" | ||||
| //         ), | ||||
| //       Landmark( | ||||
| //         name: "Pont-des-arts", | ||||
| //         location: [48.5130, 2.2015], | ||||
| //         type: LandmarkType(name: "Bridge"), | ||||
| //         imageURL: "https://upload.wikimedia.org/wikipedia/commons/thumb/d/d1/Pont_des_Arts%2C_6e_Arrondissement%2C_Paris_%28HDR%29_20140320_1.jpg/560px-Pont_des_Arts%2C_6e_Arrondissement%2C_Paris_%28HDR%29_20140320_1.jpg"), | ||||
| //       Landmark( | ||||
| //         name: "Panthéon", | ||||
| //         location: [48.5046, 2.2046], | ||||
| //         type: LandmarkType(name: "Monument"), | ||||
| //         imageURL: "https://upload.wikimedia.org/wikipedia/commons/thumb/8/80/Pantheon_of_Paris_007.JPG/1280px-Pantheon_of_Paris_007.JPG" | ||||
| //         ), | ||||
| //     ]; | ||||
| //     // sleep 10 seconds | ||||
| //     await Future.delayed(Duration(seconds: 5)); | ||||
| //     return landmarks; | ||||
| //   // } else { | ||||
| //   //   // If the server did not return a 200 OK response, | ||||
| //   //   // then throw an exception. | ||||
| //   //   throw Exception('Failed to load destination'); | ||||
| //   // } | ||||
| // } | ||||
							
								
								
									
										45
									
								
								frontend/lib/utils/fetch_trip.dart
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										45
									
								
								frontend/lib/utils/fetch_trip.dart
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,45 @@ | ||||
| import 'package:dio/dio.dart'; | ||||
| import 'package:anyway/constants.dart'; | ||||
| import "package:anyway/structs/landmark.dart"; | ||||
| import "package:anyway/structs/trip.dart"; | ||||
| import "package:anyway/structs/preferences.dart"; | ||||
|  | ||||
| import "package:anyway/structs/linked_landmarks.dart"; | ||||
|  | ||||
| Dio dio = Dio( | ||||
|     BaseOptions( | ||||
|       baseUrl: API_URL_BASE, | ||||
|       connectTimeout: const Duration(seconds: 5), | ||||
|       receiveTimeout: const Duration(seconds: 60), | ||||
|       // api is notoriously slow | ||||
|       // headers: { | ||||
|       //   HttpHeaders.userAgentHeader: 'dio', | ||||
|       //   'api': '1.0.0', | ||||
|       // }, | ||||
|       contentType: Headers.jsonContentType, | ||||
|       responseType: ResponseType.json, | ||||
|   ), | ||||
| ); | ||||
|  | ||||
| Future<Trip> fetchTrip( | ||||
|   List<double> startPoint, | ||||
|   UserPreferences preferences, | ||||
| ) async { | ||||
|   final response = await dio.post( | ||||
|     "/trip/new", | ||||
|     data: { | ||||
|       // 'preferences': preferences.toJson(), | ||||
|       'start': [48,2.3] | ||||
|     } | ||||
|   ); | ||||
|  | ||||
|   // handle errors | ||||
|   if (response.statusCode != 200) { | ||||
|     throw Exception('Failed to load trip'); | ||||
|   } | ||||
|   if (response.data["error"] != null) { | ||||
|     throw Exception(response.data["error"]); | ||||
|   } | ||||
|   return Trip.fromJson(response.data); | ||||
| } | ||||
|  | ||||
| @@ -5,8 +5,12 @@ | ||||
| import FlutterMacOS | ||||
| import Foundation | ||||
|  | ||||
| import path_provider_foundation | ||||
| import shared_preferences_foundation | ||||
| import sqflite | ||||
|  | ||||
| func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { | ||||
|   PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin")) | ||||
|   SharedPreferencesPlugin.register(with: registry.registrar(forPlugin: "SharedPreferencesPlugin")) | ||||
|   SqflitePlugin.register(with: registry.registrar(forPlugin: "SqflitePlugin")) | ||||
| } | ||||
|   | ||||
| @@ -1,6 +1,14 @@ | ||||
| # Generated by pub | ||||
| # See https://dart.dev/tools/pub/glossary#lockfile | ||||
| packages: | ||||
|   args: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: args | ||||
|       sha256: "7cf60b9f0cc88203c5a190b4cd62a99feea42759a7fa695010eb5de1c0b2252a" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "2.5.0" | ||||
|   async: | ||||
|     dependency: transitive | ||||
|     description: | ||||
| @@ -41,6 +49,14 @@ packages: | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "1.18.0" | ||||
|   crypto: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: crypto | ||||
|       sha256: ff625774173754681d66daaf4a448684fb04b78f902da9cb3d308c19cc5e8bab | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "3.0.3" | ||||
|   csslib: | ||||
|     dependency: transitive | ||||
|     description: | ||||
| @@ -97,11 +113,27 @@ packages: | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "7.0.0" | ||||
|   fixnum: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: fixnum | ||||
|       sha256: "25517a4deb0c03aa0f32fd12db525856438902d9c16536311e76cdc57b31d7d1" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "1.1.0" | ||||
|   flutter: | ||||
|     dependency: "direct main" | ||||
|     description: flutter | ||||
|     source: sdk | ||||
|     version: "0.0.0" | ||||
|   flutter_cache_manager: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: flutter_cache_manager | ||||
|       sha256: a77f77806a790eb9ba0118a5a3a936e81c4fea2b61533033b2b0c3d50bbde5ea | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "3.4.0" | ||||
|   flutter_lints: | ||||
|     dependency: "direct dev" | ||||
|     description: | ||||
| @@ -114,10 +146,18 @@ packages: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: flutter_plugin_android_lifecycle | ||||
|       sha256: "8cf40eebf5dec866a6d1956ad7b4f7016e6c0cc69847ab946833b7d43743809f" | ||||
|       sha256: "9d98bd47ef9d34e803d438f17fd32b116d31009f534a6fa5ce3a1167f189a6de" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "2.0.19" | ||||
|     version: "2.0.21" | ||||
|   flutter_svg: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: flutter_svg | ||||
|       sha256: "7b4ca6cf3304575fe9c8ec64813c8d02ee41d2afe60bcfe0678bcb5375d596a2" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "2.0.10+1" | ||||
|   flutter_test: | ||||
|     dependency: "direct dev" | ||||
|     description: flutter | ||||
| @@ -132,50 +172,50 @@ packages: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: google_maps | ||||
|       sha256: "47eef3836b49bb030d5cb3afc60b8451408bf34cf753e571b645d6529eb4251a" | ||||
|       sha256: "463b38e5a92a05cde41220a11fd5eef3847031fef3e8cf295ac76ec453246907" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "7.1.0" | ||||
|     version: "8.0.0" | ||||
|   google_maps_flutter: | ||||
|     dependency: "direct main" | ||||
|     description: | ||||
|       name: google_maps_flutter | ||||
|       sha256: c1972cbad779bc5346c49045f26ae45550a0958b1cbca5b524dd3c8954995d28 | ||||
|       sha256: acf0ec482d86b2ac55ade80597ce7f797a47971f5210ebfd030f0d58130e0a94 | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "2.6.1" | ||||
|     version: "2.7.0" | ||||
|   google_maps_flutter_android: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: google_maps_flutter_android | ||||
|       sha256: "0bcadb80eba39afda77dede89a6caafd3b68f2786b90491eceea4a01c3db181c" | ||||
|       sha256: "5d444f4135559488d7ea325eae710ae3284e6951b1b61729a0ac026456fe1548" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "2.8.0" | ||||
|     version: "2.12.1" | ||||
|   google_maps_flutter_ios: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: google_maps_flutter_ios | ||||
|       sha256: e5132d17f051600d90d79d9f574b177c24231da702453a036db2490f9ced4646 | ||||
|       sha256: a6e3c6ecdda6c985053f944be13a0645ebb919da2ef0f5bc579c5e1670a5b2a8 | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "2.6.0" | ||||
|     version: "2.10.0" | ||||
|   google_maps_flutter_platform_interface: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: google_maps_flutter_platform_interface | ||||
|       sha256: "167af879da4d004cd58771f1469b91dcc3b9b0a2c5334cc6bf71fd41d4b35403" | ||||
|       sha256: bd60ca330e3c7763b95b477054adec338a522d982af73ecc520b232474063ac5 | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "2.6.0" | ||||
|     version: "2.8.0" | ||||
|   google_maps_flutter_web: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: google_maps_flutter_web | ||||
|       sha256: "0c0d5c723d94b295cf86dd1c45ff91d2ac1fff7c05ddca4f01bef9fa0a014690" | ||||
|       sha256: "8d5d0f58bfc4afac0bbe3d399f2018fcea691e3ea3d35254b7aae56df5827659" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "0.5.7" | ||||
|     version: "0.5.9+1" | ||||
|   html: | ||||
|     dependency: transitive | ||||
|     description: | ||||
| @@ -188,10 +228,10 @@ packages: | ||||
|     dependency: "direct main" | ||||
|     description: | ||||
|       name: http | ||||
|       sha256: "761a297c042deedc1ffbb156d6e2af13886bb305c2a343a4d972504cd67dd938" | ||||
|       sha256: b9c29a161230ee03d3ccf545097fccd9b87a5264228c5d348202e0f0c28f9010 | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "1.2.1" | ||||
|     version: "1.2.2" | ||||
|   http_parser: | ||||
|     dependency: transitive | ||||
|     description: | ||||
| @@ -200,22 +240,6 @@ packages: | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "4.0.2" | ||||
|   js: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: js | ||||
|       sha256: f2c445dce49627136094980615a031419f7f3eb393237e4ecd97ac15dea343f3 | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "0.6.7" | ||||
|   js_wrapping: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: js_wrapping | ||||
|       sha256: e385980f7c76a8c1c9a560dfb623b890975841542471eade630b2871d243851c | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "0.7.4" | ||||
|   leak_tracker: | ||||
|     dependency: transitive | ||||
|     description: | ||||
| @@ -280,6 +304,38 @@ packages: | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "1.9.0" | ||||
|   path_parsing: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: path_parsing | ||||
|       sha256: e3e67b1629e6f7e8100b367d3db6ba6af4b1f0bb80f64db18ef1fbabd2fa9ccf | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "1.0.1" | ||||
|   path_provider: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: path_provider | ||||
|       sha256: fec0d61223fba3154d87759e3cc27fe2c8dc498f6386c6d6fc80d1afdd1bf378 | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "2.1.4" | ||||
|   path_provider_android: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: path_provider_android | ||||
|       sha256: "490539678396d4c3c0b06efdaab75ae60675c3e0c66f72bc04c2e2c1e0e2abeb" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "2.2.9" | ||||
|   path_provider_foundation: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: path_provider_foundation | ||||
|       sha256: f234384a3fdd67f989b4d54a5d73ca2a6c422fa55ae694381ae0f4375cd1ea16 | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "2.4.0" | ||||
|   path_provider_linux: | ||||
|     dependency: transitive | ||||
|     description: | ||||
| @@ -300,18 +356,26 @@ packages: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: path_provider_windows | ||||
|       sha256: "8bc9f22eee8690981c22aa7fc602f5c85b497a6fb2ceb35ee5a5e5ed85ad8170" | ||||
|       sha256: bd6f00dbd873bfb70d0761682da2b3a2c2fccc2b9e84c495821639601d81afe7 | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "2.2.1" | ||||
|     version: "2.3.0" | ||||
|   petitparser: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: petitparser | ||||
|       sha256: c15605cd28af66339f8eb6fbe0e541bfe2d1b72d5825efc6598f3e0a31b9ad27 | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "6.0.2" | ||||
|   platform: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: platform | ||||
|       sha256: "12220bb4b65720483f8fa9450b4332347737cf8213dd2840d8b2c823e47243ec" | ||||
|       sha256: "9b71283fc13df574056616011fb138fd3b793ea47cc509c189a6c3fa5f8a1a65" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "3.1.4" | ||||
|     version: "3.1.5" | ||||
|   plugin_platform_interface: | ||||
|     dependency: transitive | ||||
|     description: | ||||
| @@ -320,6 +384,14 @@ packages: | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "2.1.8" | ||||
|   rxdart: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: rxdart | ||||
|       sha256: "5c3004a4a8dbb94bd4bf5412a4def4acdaa12e12f269737a5751369e12d1a962" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "0.28.0" | ||||
|   sanitize_html: | ||||
|     dependency: transitive | ||||
|     description: | ||||
| @@ -332,58 +404,58 @@ packages: | ||||
|     dependency: "direct main" | ||||
|     description: | ||||
|       name: shared_preferences | ||||
|       sha256: d3bbe5553a986e83980916ded2f0b435ef2e1893dfaa29d5a7a790d0eca12180 | ||||
|       sha256: c3f888ba2d659f3e75f4686112cc1e71f46177f74452d40d8307edc332296ead | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "2.2.3" | ||||
|     version: "2.3.0" | ||||
|   shared_preferences_android: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: shared_preferences_android | ||||
|       sha256: "1ee8bf911094a1b592de7ab29add6f826a7331fb854273d55918693d5364a1f2" | ||||
|       sha256: "041be4d9d2dc6079cf342bc8b761b03787e3b71192d658220a56cac9c04a0294" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "2.2.2" | ||||
|     version: "2.3.0" | ||||
|   shared_preferences_foundation: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: shared_preferences_foundation | ||||
|       sha256: "0a8a893bf4fd1152f93fec03a415d11c27c74454d96e2318a7ac38dd18683ab7" | ||||
|       sha256: "671e7a931f55a08aa45be2a13fe7247f2a41237897df434b30d2012388191833" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "2.4.0" | ||||
|     version: "2.5.0" | ||||
|   shared_preferences_linux: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: shared_preferences_linux | ||||
|       sha256: "9f2cbcf46d4270ea8be39fa156d86379077c8a5228d9dfdb1164ae0bb93f1faa" | ||||
|       sha256: "2ba0510d3017f91655b7543e9ee46d48619de2a2af38e5c790423f7007c7ccc1" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "2.3.2" | ||||
|     version: "2.4.0" | ||||
|   shared_preferences_platform_interface: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: shared_preferences_platform_interface | ||||
|       sha256: "22e2ecac9419b4246d7c22bfbbda589e3acf5c0351137d87dd2939d984d37c3b" | ||||
|       sha256: "57cbf196c486bc2cf1f02b85784932c6094376284b3ad5779d1b1c6c6a816b80" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "2.3.2" | ||||
|     version: "2.4.1" | ||||
|   shared_preferences_web: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: shared_preferences_web | ||||
|       sha256: "9aee1089b36bd2aafe06582b7d7817fd317ef05fc30e6ba14bff247d0933042a" | ||||
|       sha256: "3a293170d4d9403c3254ee05b84e62e8a9b3c5808ebd17de6a33fe9ea6457936" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "2.3.0" | ||||
|     version: "2.4.0" | ||||
|   shared_preferences_windows: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: shared_preferences_windows | ||||
|       sha256: "841ad54f3c8381c480d0c9b508b89a34036f512482c407e6df7a9c4aa2ef8f59" | ||||
|       sha256: "398084b47b7f92110683cac45c6dc4aae853db47e470e5ddcd52cab7f7196ab2" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "2.3.2" | ||||
|     version: "2.4.0" | ||||
|   sky_engine: | ||||
|     dependency: transitive | ||||
|     description: flutter | ||||
| @@ -405,6 +477,30 @@ packages: | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "1.10.0" | ||||
|   sprintf: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: sprintf | ||||
|       sha256: "1fc9ffe69d4df602376b52949af107d8f5703b77cda567c4d7d86a0693120f23" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "7.0.0" | ||||
|   sqflite: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: sqflite | ||||
|       sha256: a43e5a27235518c03ca238e7b4732cf35eabe863a369ceba6cbefa537a66f16d | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "2.3.3+1" | ||||
|   sqflite_common: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: sqflite_common | ||||
|       sha256: "3da423ce7baf868be70e2c0976c28a1bb2f73644268b7ffa7d2e08eab71f16a4" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "2.5.4" | ||||
|   stack_trace: | ||||
|     dependency: transitive | ||||
|     description: | ||||
| @@ -437,6 +533,14 @@ packages: | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "1.2.0" | ||||
|   synchronized: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: synchronized | ||||
|       sha256: "539ef412b170d65ecdafd780f924e5be3f60032a1128df156adad6c5b373d558" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "3.1.0+1" | ||||
|   term_glyph: | ||||
|     dependency: transitive | ||||
|     description: | ||||
| @@ -453,6 +557,14 @@ packages: | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "0.7.0" | ||||
|   the_widget_marker: | ||||
|     dependency: "direct main" | ||||
|     description: | ||||
|       name: the_widget_marker | ||||
|       sha256: "2476ae6b1fe29bbffa3596546871bd26f724c223ea7da74775801d9b70d64811" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "1.0.0" | ||||
|   typed_data: | ||||
|     dependency: transitive | ||||
|     description: | ||||
| @@ -461,6 +573,38 @@ packages: | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "1.3.2" | ||||
|   uuid: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: uuid | ||||
|       sha256: "83d37c7ad7aaf9aa8e275490669535c8080377cfa7a7004c24dfac53afffaa90" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "4.4.2" | ||||
|   vector_graphics: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: vector_graphics | ||||
|       sha256: "32c3c684e02f9bc0afb0ae0aa653337a2fe022e8ab064bcd7ffda27a74e288e3" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "1.1.11+1" | ||||
|   vector_graphics_codec: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: vector_graphics_codec | ||||
|       sha256: c86987475f162fadff579e7320c7ddda04cd2fdeffbe1129227a85d9ac9e03da | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "1.1.11+1" | ||||
|   vector_graphics_compiler: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: vector_graphics_compiler | ||||
|       sha256: "12faff3f73b1741a36ca7e31b292ddeb629af819ca9efe9953b70bd63fc8cd81" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "1.1.11+1" | ||||
|   vector_math: | ||||
|     dependency: transitive | ||||
|     description: | ||||
| @@ -485,14 +629,6 @@ packages: | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "0.5.1" | ||||
|   win32: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: win32 | ||||
|       sha256: a79dbe579cb51ecd6d30b17e0cae4e0ea15e2c0e66f69ad4198f22a6789e94f4 | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "5.5.1" | ||||
|   xdg_directories: | ||||
|     dependency: transitive | ||||
|     description: | ||||
| @@ -501,6 +637,14 @@ packages: | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "1.0.4" | ||||
|   xml: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: xml | ||||
|       sha256: b015a8ad1c488f66851d762d3090a21c600e479dc75e68328c52774040cf9226 | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "6.5.0" | ||||
| sdks: | ||||
|   dart: ">=3.4.0 <4.0.0" | ||||
|   flutter: ">=3.19.0" | ||||
|   flutter: ">=3.22.0" | ||||
|   | ||||
| @@ -36,10 +36,11 @@ dependencies: | ||||
|   # Use with the CupertinoIcons class for iOS style icons. | ||||
|   cupertino_icons: ^1.0.6 | ||||
|   sliding_up_panel: ^2.0.0+1 | ||||
|   google_maps_flutter: ^2.6.1 | ||||
|   http: ^1.2.1 | ||||
|   shared_preferences: ^2.2.3 | ||||
|   dio: ^5.5.0+1 | ||||
|   google_maps_flutter: ^2.7.0 | ||||
|   the_widget_marker: ^1.0.0 | ||||
|  | ||||
| dev_dependencies: | ||||
|   flutter_test: | ||||
|   | ||||
		Reference in New Issue
	
	Block a user