frontend groundwork
This commit is contained in:
		@@ -44,7 +44,7 @@ jobs:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    - name: Add required secrets
 | 
					    - name: Add required secrets
 | 
				
			||||||
      run: |
 | 
					      run: |
 | 
				
			||||||
        echo ${{ secrets.ANDROID_SECRETS_PROPERTIES }} > ./android/secrets.properties
 | 
					        echo ${{ secrets.ANDROID_SECRETS_PROPERTIES }} >> ./android/secrets.properties
 | 
				
			||||||
      working-directory: ./frontend
 | 
					      working-directory: ./frontend
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    - name: Sanity check
 | 
					    - name: Sanity check
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -13,6 +13,6 @@ EXPOSE 8000
 | 
				
			|||||||
# Set environment variables used by the deployment. These can be overridden by the user using this image.
 | 
					# Set environment variables used by the deployment. These can be overridden by the user using this image.
 | 
				
			||||||
ENV NUM_WORKERS=1
 | 
					ENV NUM_WORKERS=1
 | 
				
			||||||
ENV OSM_CACHE_DIR=/cache
 | 
					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
 | 
					CMD fastapi run src/main.py --port 8000 --workers $NUM_WORKERS
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -26,6 +26,6 @@ logging.config.dictConfig(config)
 | 
				
			|||||||
if os.getenv('DEBUG', False):
 | 
					if os.getenv('DEBUG', False):
 | 
				
			||||||
    logging.getLogger().setLevel(logging.DEBUG)
 | 
					    logging.getLogger().setLevel(logging.DEBUG)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
MEMCACHE_HOST = os.getenv('MEMCACHE_HOST', None)
 | 
					MEMCACHED_HOST_PATH = os.getenv('MEMCACHED_HOST_PATH', None)
 | 
				
			||||||
if MEMCACHE_HOST == "none":
 | 
					if MEMCACHED_HOST_PATH == "none":
 | 
				
			||||||
    MEMCACHE_HOST = None
 | 
					    MEMCACHED_HOST_PATH = None
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -12,7 +12,7 @@ class DummyClient:
 | 
				
			|||||||
        return self._data[key]
 | 
					        return self._data[key]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if constants.MEMCACHE_HOST is None:
 | 
					if constants.MEMCACHED_HOST_PATH is None:
 | 
				
			||||||
    client = DummyClient()
 | 
					    client = DummyClient()
 | 
				
			||||||
else:
 | 
					else:
 | 
				
			||||||
    client = Client(constants.MEMCACHE_HOST, timeout=1)
 | 
					    client = Client(constants.MEMCACHED_HOST_PATH, timeout=1)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -61,7 +61,7 @@ android {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    defaultConfig {
 | 
					    defaultConfig {
 | 
				
			||||||
        // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
 | 
					        // 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.
 | 
					        // 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.
 | 
					        // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration.
 | 
				
			||||||
        // Minimum Android version for Google Maps SDK
 | 
					        // 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
 | 
					import io.flutter.embedding.android.FlutterActivity
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,9 +1,10 @@
 | 
				
			|||||||
import 'dart:collection';
 | 
					import 'dart:collection';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import 'package:flutter/material.dart';
 | 
				
			||||||
import 'package:anyway/structs/landmark.dart';
 | 
					import 'package:anyway/structs/landmark.dart';
 | 
				
			||||||
import 'package:anyway/structs/trip.dart';
 | 
					import 'package:anyway/structs/trip.dart';
 | 
				
			||||||
import 'package:flutter/material.dart';
 | 
					 | 
				
			||||||
import 'package:google_maps_flutter/google_maps_flutter.dart';
 | 
					import 'package:google_maps_flutter/google_maps_flutter.dart';
 | 
				
			||||||
 | 
					import 'package:the_widget_marker/the_widget_marker.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class MapWidget extends StatefulWidget {
 | 
					class MapWidget extends StatefulWidget {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -25,6 +26,7 @@ class _MapWidgetState extends State<MapWidget> {
 | 
				
			|||||||
    zoom: 11.0,
 | 
					    zoom: 11.0,
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
  Set<Marker> markers = <Marker>{};
 | 
					  Set<Marker> markers = <Marker>{};
 | 
				
			||||||
 | 
					  final GlobalKey globalKey = GlobalKey();
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  void _onMapCreated(GoogleMapController controller) async {
 | 
					  void _onMapCreated(GoogleMapController controller) async {
 | 
				
			||||||
@@ -49,28 +51,81 @@ class _MapWidgetState extends State<MapWidget> {
 | 
				
			|||||||
    Trip? trip = await widget.trip;
 | 
					    Trip? trip = await widget.trip;
 | 
				
			||||||
    LinkedList<Landmark>? landmarks = trip?.landmarks;
 | 
					    LinkedList<Landmark>? landmarks = trip?.landmarks;
 | 
				
			||||||
    if (landmarks != null){
 | 
					    if (landmarks != null){
 | 
				
			||||||
      setState(() {
 | 
					      for (Landmark landmark in landmarks) {
 | 
				
			||||||
        for (Landmark landmark in landmarks) {
 | 
					        markers.add(Marker(
 | 
				
			||||||
          markers.add(Marker(
 | 
					          markerId: MarkerId(landmark.name),
 | 
				
			||||||
            markerId: MarkerId(landmark.name),
 | 
					          position: LatLng(landmark.location[0], landmark.location[1]),
 | 
				
			||||||
            position: LatLng(landmark.location[0], landmark.location[1]),
 | 
					          // infoWindow: InfoWindow(title: landmark.name, snippet: landmark.type.name),
 | 
				
			||||||
            infoWindow: InfoWindow(title: landmark.name, snippet: landmark.type.name),
 | 
					          icon: await MarkerIcon.widgetToIcon(globalKey),
 | 
				
			||||||
          ));
 | 
					        ));
 | 
				
			||||||
        }
 | 
					      }
 | 
				
			||||||
      });
 | 
					      setState(() {});
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  @override
 | 
					  @override
 | 
				
			||||||
  Widget build(BuildContext context) {
 | 
					  Widget build(BuildContext context) {
 | 
				
			||||||
    return GoogleMap(
 | 
					    return Stack(
 | 
				
			||||||
      onMapCreated: _onMapCreated,
 | 
					      children: [
 | 
				
			||||||
      initialCameraPosition: _cameraPosition,
 | 
					        MyMarker(globalKey),
 | 
				
			||||||
      onCameraIdle: _onCameraIdle,
 | 
					
 | 
				
			||||||
      // onLongPress: ,
 | 
					        GoogleMap(
 | 
				
			||||||
      markers: markers,
 | 
					              onMapCreated: _onMapCreated,
 | 
				
			||||||
      cloudMapId: '41c21ac9b81dbfd8',
 | 
					              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:flutter/material.dart';
 | 
				
			||||||
 | 
					import "package:anyway/structs/trip.dart";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class NewTripPage extends StatefulWidget {
 | 
					class NewTripPage extends StatefulWidget {
 | 
				
			||||||
  const NewTripPage({Key? key}) : super(key: key);
 | 
					  const NewTripPage({Key? key}) : super(key: key);
 | 
				
			||||||
@@ -9,22 +15,71 @@ class NewTripPage extends StatefulWidget {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class _NewTripPageState extends State<NewTripPage> {
 | 
					class _NewTripPageState extends State<NewTripPage> {
 | 
				
			||||||
 | 
					  final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
 | 
				
			||||||
 | 
					  final TextEditingController latController = TextEditingController();
 | 
				
			||||||
 | 
					  final TextEditingController lonController = TextEditingController();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  @override
 | 
					  @override
 | 
				
			||||||
  Widget build(BuildContext context) {
 | 
					  Widget build(BuildContext context) {
 | 
				
			||||||
    return Scaffold(
 | 
					    return Scaffold(
 | 
				
			||||||
      appBar: AppBar(
 | 
					      appBar: AppBar(
 | 
				
			||||||
        title: const Text('New Trip'),
 | 
					        title: const Text('New Trip'),
 | 
				
			||||||
      ),
 | 
					      ),
 | 
				
			||||||
      body: Center(
 | 
					      body: Form(
 | 
				
			||||||
        child: Column(
 | 
					        key: _formKey,
 | 
				
			||||||
          mainAxisAlignment: MainAxisAlignment.center,
 | 
					        child: 
 | 
				
			||||||
          children: <Widget>[
 | 
					          Padding(
 | 
				
			||||||
            const Text(
 | 
					            padding: const EdgeInsets.all(15.0),
 | 
				
			||||||
              'Create a new trip',
 | 
					            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 FlutterMacOS
 | 
				
			||||||
import Foundation
 | 
					import Foundation
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import path_provider_foundation
 | 
				
			||||||
import shared_preferences_foundation
 | 
					import shared_preferences_foundation
 | 
				
			||||||
 | 
					import sqflite
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) {
 | 
					func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) {
 | 
				
			||||||
 | 
					  PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin"))
 | 
				
			||||||
  SharedPreferencesPlugin.register(with: registry.registrar(forPlugin: "SharedPreferencesPlugin"))
 | 
					  SharedPreferencesPlugin.register(with: registry.registrar(forPlugin: "SharedPreferencesPlugin"))
 | 
				
			||||||
 | 
					  SqflitePlugin.register(with: registry.registrar(forPlugin: "SqflitePlugin"))
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,6 +1,14 @@
 | 
				
			|||||||
# Generated by pub
 | 
					# Generated by pub
 | 
				
			||||||
# See https://dart.dev/tools/pub/glossary#lockfile
 | 
					# See https://dart.dev/tools/pub/glossary#lockfile
 | 
				
			||||||
packages:
 | 
					packages:
 | 
				
			||||||
 | 
					  args:
 | 
				
			||||||
 | 
					    dependency: transitive
 | 
				
			||||||
 | 
					    description:
 | 
				
			||||||
 | 
					      name: args
 | 
				
			||||||
 | 
					      sha256: "7cf60b9f0cc88203c5a190b4cd62a99feea42759a7fa695010eb5de1c0b2252a"
 | 
				
			||||||
 | 
					      url: "https://pub.dev"
 | 
				
			||||||
 | 
					    source: hosted
 | 
				
			||||||
 | 
					    version: "2.5.0"
 | 
				
			||||||
  async:
 | 
					  async:
 | 
				
			||||||
    dependency: transitive
 | 
					    dependency: transitive
 | 
				
			||||||
    description:
 | 
					    description:
 | 
				
			||||||
@@ -41,6 +49,14 @@ packages:
 | 
				
			|||||||
      url: "https://pub.dev"
 | 
					      url: "https://pub.dev"
 | 
				
			||||||
    source: hosted
 | 
					    source: hosted
 | 
				
			||||||
    version: "1.18.0"
 | 
					    version: "1.18.0"
 | 
				
			||||||
 | 
					  crypto:
 | 
				
			||||||
 | 
					    dependency: transitive
 | 
				
			||||||
 | 
					    description:
 | 
				
			||||||
 | 
					      name: crypto
 | 
				
			||||||
 | 
					      sha256: ff625774173754681d66daaf4a448684fb04b78f902da9cb3d308c19cc5e8bab
 | 
				
			||||||
 | 
					      url: "https://pub.dev"
 | 
				
			||||||
 | 
					    source: hosted
 | 
				
			||||||
 | 
					    version: "3.0.3"
 | 
				
			||||||
  csslib:
 | 
					  csslib:
 | 
				
			||||||
    dependency: transitive
 | 
					    dependency: transitive
 | 
				
			||||||
    description:
 | 
					    description:
 | 
				
			||||||
@@ -97,11 +113,27 @@ packages:
 | 
				
			|||||||
      url: "https://pub.dev"
 | 
					      url: "https://pub.dev"
 | 
				
			||||||
    source: hosted
 | 
					    source: hosted
 | 
				
			||||||
    version: "7.0.0"
 | 
					    version: "7.0.0"
 | 
				
			||||||
 | 
					  fixnum:
 | 
				
			||||||
 | 
					    dependency: transitive
 | 
				
			||||||
 | 
					    description:
 | 
				
			||||||
 | 
					      name: fixnum
 | 
				
			||||||
 | 
					      sha256: "25517a4deb0c03aa0f32fd12db525856438902d9c16536311e76cdc57b31d7d1"
 | 
				
			||||||
 | 
					      url: "https://pub.dev"
 | 
				
			||||||
 | 
					    source: hosted
 | 
				
			||||||
 | 
					    version: "1.1.0"
 | 
				
			||||||
  flutter:
 | 
					  flutter:
 | 
				
			||||||
    dependency: "direct main"
 | 
					    dependency: "direct main"
 | 
				
			||||||
    description: flutter
 | 
					    description: flutter
 | 
				
			||||||
    source: sdk
 | 
					    source: sdk
 | 
				
			||||||
    version: "0.0.0"
 | 
					    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:
 | 
					  flutter_lints:
 | 
				
			||||||
    dependency: "direct dev"
 | 
					    dependency: "direct dev"
 | 
				
			||||||
    description:
 | 
					    description:
 | 
				
			||||||
@@ -114,10 +146,18 @@ packages:
 | 
				
			|||||||
    dependency: transitive
 | 
					    dependency: transitive
 | 
				
			||||||
    description:
 | 
					    description:
 | 
				
			||||||
      name: flutter_plugin_android_lifecycle
 | 
					      name: flutter_plugin_android_lifecycle
 | 
				
			||||||
      sha256: "8cf40eebf5dec866a6d1956ad7b4f7016e6c0cc69847ab946833b7d43743809f"
 | 
					      sha256: "9d98bd47ef9d34e803d438f17fd32b116d31009f534a6fa5ce3a1167f189a6de"
 | 
				
			||||||
      url: "https://pub.dev"
 | 
					      url: "https://pub.dev"
 | 
				
			||||||
    source: hosted
 | 
					    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:
 | 
					  flutter_test:
 | 
				
			||||||
    dependency: "direct dev"
 | 
					    dependency: "direct dev"
 | 
				
			||||||
    description: flutter
 | 
					    description: flutter
 | 
				
			||||||
@@ -132,50 +172,50 @@ packages:
 | 
				
			|||||||
    dependency: transitive
 | 
					    dependency: transitive
 | 
				
			||||||
    description:
 | 
					    description:
 | 
				
			||||||
      name: google_maps
 | 
					      name: google_maps
 | 
				
			||||||
      sha256: "47eef3836b49bb030d5cb3afc60b8451408bf34cf753e571b645d6529eb4251a"
 | 
					      sha256: "463b38e5a92a05cde41220a11fd5eef3847031fef3e8cf295ac76ec453246907"
 | 
				
			||||||
      url: "https://pub.dev"
 | 
					      url: "https://pub.dev"
 | 
				
			||||||
    source: hosted
 | 
					    source: hosted
 | 
				
			||||||
    version: "7.1.0"
 | 
					    version: "8.0.0"
 | 
				
			||||||
  google_maps_flutter:
 | 
					  google_maps_flutter:
 | 
				
			||||||
    dependency: "direct main"
 | 
					    dependency: "direct main"
 | 
				
			||||||
    description:
 | 
					    description:
 | 
				
			||||||
      name: google_maps_flutter
 | 
					      name: google_maps_flutter
 | 
				
			||||||
      sha256: c1972cbad779bc5346c49045f26ae45550a0958b1cbca5b524dd3c8954995d28
 | 
					      sha256: acf0ec482d86b2ac55ade80597ce7f797a47971f5210ebfd030f0d58130e0a94
 | 
				
			||||||
      url: "https://pub.dev"
 | 
					      url: "https://pub.dev"
 | 
				
			||||||
    source: hosted
 | 
					    source: hosted
 | 
				
			||||||
    version: "2.6.1"
 | 
					    version: "2.7.0"
 | 
				
			||||||
  google_maps_flutter_android:
 | 
					  google_maps_flutter_android:
 | 
				
			||||||
    dependency: transitive
 | 
					    dependency: transitive
 | 
				
			||||||
    description:
 | 
					    description:
 | 
				
			||||||
      name: google_maps_flutter_android
 | 
					      name: google_maps_flutter_android
 | 
				
			||||||
      sha256: "0bcadb80eba39afda77dede89a6caafd3b68f2786b90491eceea4a01c3db181c"
 | 
					      sha256: "5d444f4135559488d7ea325eae710ae3284e6951b1b61729a0ac026456fe1548"
 | 
				
			||||||
      url: "https://pub.dev"
 | 
					      url: "https://pub.dev"
 | 
				
			||||||
    source: hosted
 | 
					    source: hosted
 | 
				
			||||||
    version: "2.8.0"
 | 
					    version: "2.12.1"
 | 
				
			||||||
  google_maps_flutter_ios:
 | 
					  google_maps_flutter_ios:
 | 
				
			||||||
    dependency: transitive
 | 
					    dependency: transitive
 | 
				
			||||||
    description:
 | 
					    description:
 | 
				
			||||||
      name: google_maps_flutter_ios
 | 
					      name: google_maps_flutter_ios
 | 
				
			||||||
      sha256: e5132d17f051600d90d79d9f574b177c24231da702453a036db2490f9ced4646
 | 
					      sha256: a6e3c6ecdda6c985053f944be13a0645ebb919da2ef0f5bc579c5e1670a5b2a8
 | 
				
			||||||
      url: "https://pub.dev"
 | 
					      url: "https://pub.dev"
 | 
				
			||||||
    source: hosted
 | 
					    source: hosted
 | 
				
			||||||
    version: "2.6.0"
 | 
					    version: "2.10.0"
 | 
				
			||||||
  google_maps_flutter_platform_interface:
 | 
					  google_maps_flutter_platform_interface:
 | 
				
			||||||
    dependency: transitive
 | 
					    dependency: transitive
 | 
				
			||||||
    description:
 | 
					    description:
 | 
				
			||||||
      name: google_maps_flutter_platform_interface
 | 
					      name: google_maps_flutter_platform_interface
 | 
				
			||||||
      sha256: "167af879da4d004cd58771f1469b91dcc3b9b0a2c5334cc6bf71fd41d4b35403"
 | 
					      sha256: bd60ca330e3c7763b95b477054adec338a522d982af73ecc520b232474063ac5
 | 
				
			||||||
      url: "https://pub.dev"
 | 
					      url: "https://pub.dev"
 | 
				
			||||||
    source: hosted
 | 
					    source: hosted
 | 
				
			||||||
    version: "2.6.0"
 | 
					    version: "2.8.0"
 | 
				
			||||||
  google_maps_flutter_web:
 | 
					  google_maps_flutter_web:
 | 
				
			||||||
    dependency: transitive
 | 
					    dependency: transitive
 | 
				
			||||||
    description:
 | 
					    description:
 | 
				
			||||||
      name: google_maps_flutter_web
 | 
					      name: google_maps_flutter_web
 | 
				
			||||||
      sha256: "0c0d5c723d94b295cf86dd1c45ff91d2ac1fff7c05ddca4f01bef9fa0a014690"
 | 
					      sha256: "8d5d0f58bfc4afac0bbe3d399f2018fcea691e3ea3d35254b7aae56df5827659"
 | 
				
			||||||
      url: "https://pub.dev"
 | 
					      url: "https://pub.dev"
 | 
				
			||||||
    source: hosted
 | 
					    source: hosted
 | 
				
			||||||
    version: "0.5.7"
 | 
					    version: "0.5.9+1"
 | 
				
			||||||
  html:
 | 
					  html:
 | 
				
			||||||
    dependency: transitive
 | 
					    dependency: transitive
 | 
				
			||||||
    description:
 | 
					    description:
 | 
				
			||||||
@@ -188,10 +228,10 @@ packages:
 | 
				
			|||||||
    dependency: "direct main"
 | 
					    dependency: "direct main"
 | 
				
			||||||
    description:
 | 
					    description:
 | 
				
			||||||
      name: http
 | 
					      name: http
 | 
				
			||||||
      sha256: "761a297c042deedc1ffbb156d6e2af13886bb305c2a343a4d972504cd67dd938"
 | 
					      sha256: b9c29a161230ee03d3ccf545097fccd9b87a5264228c5d348202e0f0c28f9010
 | 
				
			||||||
      url: "https://pub.dev"
 | 
					      url: "https://pub.dev"
 | 
				
			||||||
    source: hosted
 | 
					    source: hosted
 | 
				
			||||||
    version: "1.2.1"
 | 
					    version: "1.2.2"
 | 
				
			||||||
  http_parser:
 | 
					  http_parser:
 | 
				
			||||||
    dependency: transitive
 | 
					    dependency: transitive
 | 
				
			||||||
    description:
 | 
					    description:
 | 
				
			||||||
@@ -200,22 +240,6 @@ packages:
 | 
				
			|||||||
      url: "https://pub.dev"
 | 
					      url: "https://pub.dev"
 | 
				
			||||||
    source: hosted
 | 
					    source: hosted
 | 
				
			||||||
    version: "4.0.2"
 | 
					    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:
 | 
					  leak_tracker:
 | 
				
			||||||
    dependency: transitive
 | 
					    dependency: transitive
 | 
				
			||||||
    description:
 | 
					    description:
 | 
				
			||||||
@@ -280,6 +304,38 @@ packages:
 | 
				
			|||||||
      url: "https://pub.dev"
 | 
					      url: "https://pub.dev"
 | 
				
			||||||
    source: hosted
 | 
					    source: hosted
 | 
				
			||||||
    version: "1.9.0"
 | 
					    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:
 | 
					  path_provider_linux:
 | 
				
			||||||
    dependency: transitive
 | 
					    dependency: transitive
 | 
				
			||||||
    description:
 | 
					    description:
 | 
				
			||||||
@@ -300,18 +356,26 @@ packages:
 | 
				
			|||||||
    dependency: transitive
 | 
					    dependency: transitive
 | 
				
			||||||
    description:
 | 
					    description:
 | 
				
			||||||
      name: path_provider_windows
 | 
					      name: path_provider_windows
 | 
				
			||||||
      sha256: "8bc9f22eee8690981c22aa7fc602f5c85b497a6fb2ceb35ee5a5e5ed85ad8170"
 | 
					      sha256: bd6f00dbd873bfb70d0761682da2b3a2c2fccc2b9e84c495821639601d81afe7
 | 
				
			||||||
      url: "https://pub.dev"
 | 
					      url: "https://pub.dev"
 | 
				
			||||||
    source: hosted
 | 
					    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:
 | 
					  platform:
 | 
				
			||||||
    dependency: transitive
 | 
					    dependency: transitive
 | 
				
			||||||
    description:
 | 
					    description:
 | 
				
			||||||
      name: platform
 | 
					      name: platform
 | 
				
			||||||
      sha256: "12220bb4b65720483f8fa9450b4332347737cf8213dd2840d8b2c823e47243ec"
 | 
					      sha256: "9b71283fc13df574056616011fb138fd3b793ea47cc509c189a6c3fa5f8a1a65"
 | 
				
			||||||
      url: "https://pub.dev"
 | 
					      url: "https://pub.dev"
 | 
				
			||||||
    source: hosted
 | 
					    source: hosted
 | 
				
			||||||
    version: "3.1.4"
 | 
					    version: "3.1.5"
 | 
				
			||||||
  plugin_platform_interface:
 | 
					  plugin_platform_interface:
 | 
				
			||||||
    dependency: transitive
 | 
					    dependency: transitive
 | 
				
			||||||
    description:
 | 
					    description:
 | 
				
			||||||
@@ -320,6 +384,14 @@ packages:
 | 
				
			|||||||
      url: "https://pub.dev"
 | 
					      url: "https://pub.dev"
 | 
				
			||||||
    source: hosted
 | 
					    source: hosted
 | 
				
			||||||
    version: "2.1.8"
 | 
					    version: "2.1.8"
 | 
				
			||||||
 | 
					  rxdart:
 | 
				
			||||||
 | 
					    dependency: transitive
 | 
				
			||||||
 | 
					    description:
 | 
				
			||||||
 | 
					      name: rxdart
 | 
				
			||||||
 | 
					      sha256: "5c3004a4a8dbb94bd4bf5412a4def4acdaa12e12f269737a5751369e12d1a962"
 | 
				
			||||||
 | 
					      url: "https://pub.dev"
 | 
				
			||||||
 | 
					    source: hosted
 | 
				
			||||||
 | 
					    version: "0.28.0"
 | 
				
			||||||
  sanitize_html:
 | 
					  sanitize_html:
 | 
				
			||||||
    dependency: transitive
 | 
					    dependency: transitive
 | 
				
			||||||
    description:
 | 
					    description:
 | 
				
			||||||
@@ -332,58 +404,58 @@ packages:
 | 
				
			|||||||
    dependency: "direct main"
 | 
					    dependency: "direct main"
 | 
				
			||||||
    description:
 | 
					    description:
 | 
				
			||||||
      name: shared_preferences
 | 
					      name: shared_preferences
 | 
				
			||||||
      sha256: d3bbe5553a986e83980916ded2f0b435ef2e1893dfaa29d5a7a790d0eca12180
 | 
					      sha256: c3f888ba2d659f3e75f4686112cc1e71f46177f74452d40d8307edc332296ead
 | 
				
			||||||
      url: "https://pub.dev"
 | 
					      url: "https://pub.dev"
 | 
				
			||||||
    source: hosted
 | 
					    source: hosted
 | 
				
			||||||
    version: "2.2.3"
 | 
					    version: "2.3.0"
 | 
				
			||||||
  shared_preferences_android:
 | 
					  shared_preferences_android:
 | 
				
			||||||
    dependency: transitive
 | 
					    dependency: transitive
 | 
				
			||||||
    description:
 | 
					    description:
 | 
				
			||||||
      name: shared_preferences_android
 | 
					      name: shared_preferences_android
 | 
				
			||||||
      sha256: "1ee8bf911094a1b592de7ab29add6f826a7331fb854273d55918693d5364a1f2"
 | 
					      sha256: "041be4d9d2dc6079cf342bc8b761b03787e3b71192d658220a56cac9c04a0294"
 | 
				
			||||||
      url: "https://pub.dev"
 | 
					      url: "https://pub.dev"
 | 
				
			||||||
    source: hosted
 | 
					    source: hosted
 | 
				
			||||||
    version: "2.2.2"
 | 
					    version: "2.3.0"
 | 
				
			||||||
  shared_preferences_foundation:
 | 
					  shared_preferences_foundation:
 | 
				
			||||||
    dependency: transitive
 | 
					    dependency: transitive
 | 
				
			||||||
    description:
 | 
					    description:
 | 
				
			||||||
      name: shared_preferences_foundation
 | 
					      name: shared_preferences_foundation
 | 
				
			||||||
      sha256: "0a8a893bf4fd1152f93fec03a415d11c27c74454d96e2318a7ac38dd18683ab7"
 | 
					      sha256: "671e7a931f55a08aa45be2a13fe7247f2a41237897df434b30d2012388191833"
 | 
				
			||||||
      url: "https://pub.dev"
 | 
					      url: "https://pub.dev"
 | 
				
			||||||
    source: hosted
 | 
					    source: hosted
 | 
				
			||||||
    version: "2.4.0"
 | 
					    version: "2.5.0"
 | 
				
			||||||
  shared_preferences_linux:
 | 
					  shared_preferences_linux:
 | 
				
			||||||
    dependency: transitive
 | 
					    dependency: transitive
 | 
				
			||||||
    description:
 | 
					    description:
 | 
				
			||||||
      name: shared_preferences_linux
 | 
					      name: shared_preferences_linux
 | 
				
			||||||
      sha256: "9f2cbcf46d4270ea8be39fa156d86379077c8a5228d9dfdb1164ae0bb93f1faa"
 | 
					      sha256: "2ba0510d3017f91655b7543e9ee46d48619de2a2af38e5c790423f7007c7ccc1"
 | 
				
			||||||
      url: "https://pub.dev"
 | 
					      url: "https://pub.dev"
 | 
				
			||||||
    source: hosted
 | 
					    source: hosted
 | 
				
			||||||
    version: "2.3.2"
 | 
					    version: "2.4.0"
 | 
				
			||||||
  shared_preferences_platform_interface:
 | 
					  shared_preferences_platform_interface:
 | 
				
			||||||
    dependency: transitive
 | 
					    dependency: transitive
 | 
				
			||||||
    description:
 | 
					    description:
 | 
				
			||||||
      name: shared_preferences_platform_interface
 | 
					      name: shared_preferences_platform_interface
 | 
				
			||||||
      sha256: "22e2ecac9419b4246d7c22bfbbda589e3acf5c0351137d87dd2939d984d37c3b"
 | 
					      sha256: "57cbf196c486bc2cf1f02b85784932c6094376284b3ad5779d1b1c6c6a816b80"
 | 
				
			||||||
      url: "https://pub.dev"
 | 
					      url: "https://pub.dev"
 | 
				
			||||||
    source: hosted
 | 
					    source: hosted
 | 
				
			||||||
    version: "2.3.2"
 | 
					    version: "2.4.1"
 | 
				
			||||||
  shared_preferences_web:
 | 
					  shared_preferences_web:
 | 
				
			||||||
    dependency: transitive
 | 
					    dependency: transitive
 | 
				
			||||||
    description:
 | 
					    description:
 | 
				
			||||||
      name: shared_preferences_web
 | 
					      name: shared_preferences_web
 | 
				
			||||||
      sha256: "9aee1089b36bd2aafe06582b7d7817fd317ef05fc30e6ba14bff247d0933042a"
 | 
					      sha256: "3a293170d4d9403c3254ee05b84e62e8a9b3c5808ebd17de6a33fe9ea6457936"
 | 
				
			||||||
      url: "https://pub.dev"
 | 
					      url: "https://pub.dev"
 | 
				
			||||||
    source: hosted
 | 
					    source: hosted
 | 
				
			||||||
    version: "2.3.0"
 | 
					    version: "2.4.0"
 | 
				
			||||||
  shared_preferences_windows:
 | 
					  shared_preferences_windows:
 | 
				
			||||||
    dependency: transitive
 | 
					    dependency: transitive
 | 
				
			||||||
    description:
 | 
					    description:
 | 
				
			||||||
      name: shared_preferences_windows
 | 
					      name: shared_preferences_windows
 | 
				
			||||||
      sha256: "841ad54f3c8381c480d0c9b508b89a34036f512482c407e6df7a9c4aa2ef8f59"
 | 
					      sha256: "398084b47b7f92110683cac45c6dc4aae853db47e470e5ddcd52cab7f7196ab2"
 | 
				
			||||||
      url: "https://pub.dev"
 | 
					      url: "https://pub.dev"
 | 
				
			||||||
    source: hosted
 | 
					    source: hosted
 | 
				
			||||||
    version: "2.3.2"
 | 
					    version: "2.4.0"
 | 
				
			||||||
  sky_engine:
 | 
					  sky_engine:
 | 
				
			||||||
    dependency: transitive
 | 
					    dependency: transitive
 | 
				
			||||||
    description: flutter
 | 
					    description: flutter
 | 
				
			||||||
@@ -405,6 +477,30 @@ packages:
 | 
				
			|||||||
      url: "https://pub.dev"
 | 
					      url: "https://pub.dev"
 | 
				
			||||||
    source: hosted
 | 
					    source: hosted
 | 
				
			||||||
    version: "1.10.0"
 | 
					    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:
 | 
					  stack_trace:
 | 
				
			||||||
    dependency: transitive
 | 
					    dependency: transitive
 | 
				
			||||||
    description:
 | 
					    description:
 | 
				
			||||||
@@ -437,6 +533,14 @@ packages:
 | 
				
			|||||||
      url: "https://pub.dev"
 | 
					      url: "https://pub.dev"
 | 
				
			||||||
    source: hosted
 | 
					    source: hosted
 | 
				
			||||||
    version: "1.2.0"
 | 
					    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:
 | 
					  term_glyph:
 | 
				
			||||||
    dependency: transitive
 | 
					    dependency: transitive
 | 
				
			||||||
    description:
 | 
					    description:
 | 
				
			||||||
@@ -453,6 +557,14 @@ packages:
 | 
				
			|||||||
      url: "https://pub.dev"
 | 
					      url: "https://pub.dev"
 | 
				
			||||||
    source: hosted
 | 
					    source: hosted
 | 
				
			||||||
    version: "0.7.0"
 | 
					    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:
 | 
					  typed_data:
 | 
				
			||||||
    dependency: transitive
 | 
					    dependency: transitive
 | 
				
			||||||
    description:
 | 
					    description:
 | 
				
			||||||
@@ -461,6 +573,38 @@ packages:
 | 
				
			|||||||
      url: "https://pub.dev"
 | 
					      url: "https://pub.dev"
 | 
				
			||||||
    source: hosted
 | 
					    source: hosted
 | 
				
			||||||
    version: "1.3.2"
 | 
					    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:
 | 
					  vector_math:
 | 
				
			||||||
    dependency: transitive
 | 
					    dependency: transitive
 | 
				
			||||||
    description:
 | 
					    description:
 | 
				
			||||||
@@ -485,14 +629,6 @@ packages:
 | 
				
			|||||||
      url: "https://pub.dev"
 | 
					      url: "https://pub.dev"
 | 
				
			||||||
    source: hosted
 | 
					    source: hosted
 | 
				
			||||||
    version: "0.5.1"
 | 
					    version: "0.5.1"
 | 
				
			||||||
  win32:
 | 
					 | 
				
			||||||
    dependency: transitive
 | 
					 | 
				
			||||||
    description:
 | 
					 | 
				
			||||||
      name: win32
 | 
					 | 
				
			||||||
      sha256: a79dbe579cb51ecd6d30b17e0cae4e0ea15e2c0e66f69ad4198f22a6789e94f4
 | 
					 | 
				
			||||||
      url: "https://pub.dev"
 | 
					 | 
				
			||||||
    source: hosted
 | 
					 | 
				
			||||||
    version: "5.5.1"
 | 
					 | 
				
			||||||
  xdg_directories:
 | 
					  xdg_directories:
 | 
				
			||||||
    dependency: transitive
 | 
					    dependency: transitive
 | 
				
			||||||
    description:
 | 
					    description:
 | 
				
			||||||
@@ -501,6 +637,14 @@ packages:
 | 
				
			|||||||
      url: "https://pub.dev"
 | 
					      url: "https://pub.dev"
 | 
				
			||||||
    source: hosted
 | 
					    source: hosted
 | 
				
			||||||
    version: "1.0.4"
 | 
					    version: "1.0.4"
 | 
				
			||||||
 | 
					  xml:
 | 
				
			||||||
 | 
					    dependency: transitive
 | 
				
			||||||
 | 
					    description:
 | 
				
			||||||
 | 
					      name: xml
 | 
				
			||||||
 | 
					      sha256: b015a8ad1c488f66851d762d3090a21c600e479dc75e68328c52774040cf9226
 | 
				
			||||||
 | 
					      url: "https://pub.dev"
 | 
				
			||||||
 | 
					    source: hosted
 | 
				
			||||||
 | 
					    version: "6.5.0"
 | 
				
			||||||
sdks:
 | 
					sdks:
 | 
				
			||||||
  dart: ">=3.4.0 <4.0.0"
 | 
					  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.
 | 
					  # Use with the CupertinoIcons class for iOS style icons.
 | 
				
			||||||
  cupertino_icons: ^1.0.6
 | 
					  cupertino_icons: ^1.0.6
 | 
				
			||||||
  sliding_up_panel: ^2.0.0+1
 | 
					  sliding_up_panel: ^2.0.0+1
 | 
				
			||||||
  google_maps_flutter: ^2.6.1
 | 
					 | 
				
			||||||
  http: ^1.2.1
 | 
					  http: ^1.2.1
 | 
				
			||||||
  shared_preferences: ^2.2.3
 | 
					  shared_preferences: ^2.2.3
 | 
				
			||||||
  dio: ^5.5.0+1
 | 
					  dio: ^5.5.0+1
 | 
				
			||||||
 | 
					  google_maps_flutter: ^2.7.0
 | 
				
			||||||
 | 
					  the_widget_marker: ^1.0.0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
dev_dependencies:
 | 
					dev_dependencies:
 | 
				
			||||||
  flutter_test:
 | 
					  flutter_test:
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user