Tentatively enable communication between front + backend #15
@@ -136,12 +136,20 @@ class _BasePageState extends State<BasePage> {
 | 
				
			|||||||
// TODO: Implement this function
 | 
					// TODO: Implement this function
 | 
				
			||||||
Trip getFirstTrip(Future<List<Trip>> trips) {
 | 
					Trip getFirstTrip(Future<List<Trip>> trips) {
 | 
				
			||||||
  Trip t1 = Trip(uuid: '1', landmarks: LinkedList<Landmark>());
 | 
					  Trip t1 = Trip(uuid: '1', landmarks: LinkedList<Landmark>());
 | 
				
			||||||
 | 
					  t1.landmarks.add(
 | 
				
			||||||
 | 
					    Landmark(
 | 
				
			||||||
 | 
					      uuid: '0',
 | 
				
			||||||
 | 
					      name: "Start",
 | 
				
			||||||
 | 
					      location: [48.85, 2.32],
 | 
				
			||||||
 | 
					      type: start,
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					  );
 | 
				
			||||||
  t1.landmarks.add(
 | 
					  t1.landmarks.add(
 | 
				
			||||||
    Landmark(
 | 
					    Landmark(
 | 
				
			||||||
      uuid: '1',
 | 
					      uuid: '1',
 | 
				
			||||||
      name: "Eiffel Tower",
 | 
					      name: "Eiffel Tower",
 | 
				
			||||||
      location: [48.859, 2.295],
 | 
					      location: [48.859, 2.295],
 | 
				
			||||||
      type: monument,
 | 
					      type: sightseeing,
 | 
				
			||||||
      imageURL: "https://upload.wikimedia.org/wikipedia/commons/thumb/a/a8/Tour_Eiffel_Wikimedia_Commons.jpg/1037px-Tour_Eiffel_Wikimedia_Commons.jpg"
 | 
					      imageURL: "https://upload.wikimedia.org/wikipedia/commons/thumb/a/a8/Tour_Eiffel_Wikimedia_Commons.jpg/1037px-Tour_Eiffel_Wikimedia_Commons.jpg"
 | 
				
			||||||
    ),
 | 
					    ),
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
@@ -150,7 +158,7 @@ Trip getFirstTrip(Future<List<Trip>> trips) {
 | 
				
			|||||||
      uuid: "2",
 | 
					      uuid: "2",
 | 
				
			||||||
      name: "Notre Dame Cathedral",
 | 
					      name: "Notre Dame Cathedral",
 | 
				
			||||||
      location: [48.8530, 2.3498],
 | 
					      location: [48.8530, 2.3498],
 | 
				
			||||||
      type: monument,
 | 
					      type: sightseeing,
 | 
				
			||||||
      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"
 | 
					      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"
 | 
				
			||||||
    ),
 | 
					    ),
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
@@ -159,7 +167,7 @@ Trip getFirstTrip(Future<List<Trip>> trips) {
 | 
				
			|||||||
      uuid: "3",
 | 
					      uuid: "3",
 | 
				
			||||||
      name: "Louvre palace",
 | 
					      name: "Louvre palace",
 | 
				
			||||||
      location: [48.8606, 2.3376],
 | 
					      location: [48.8606, 2.3376],
 | 
				
			||||||
      type: museum,
 | 
					      type: sightseeing,
 | 
				
			||||||
      imageURL: "https://upload.wikimedia.org/wikipedia/commons/thumb/6/66/Louvre_Museum_Wikimedia_Commons.jpg/540px-Louvre_Museum_Wikimedia_Commons.jpg"
 | 
					      imageURL: "https://upload.wikimedia.org/wikipedia/commons/thumb/6/66/Louvre_Museum_Wikimedia_Commons.jpg/540px-Louvre_Museum_Wikimedia_Commons.jpg"
 | 
				
			||||||
    ),
 | 
					    ),
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
@@ -168,7 +176,7 @@ Trip getFirstTrip(Future<List<Trip>> trips) {
 | 
				
			|||||||
      uuid: "4",
 | 
					      uuid: "4",
 | 
				
			||||||
      name: "Pont-des-arts",
 | 
					      name: "Pont-des-arts",
 | 
				
			||||||
      location: [48.8585, 2.3376],
 | 
					      location: [48.8585, 2.3376],
 | 
				
			||||||
      type: monument,
 | 
					      type: sightseeing,
 | 
				
			||||||
      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"
 | 
					      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"
 | 
				
			||||||
    ),
 | 
					    ),
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
@@ -177,9 +185,18 @@ Trip getFirstTrip(Future<List<Trip>> trips) {
 | 
				
			|||||||
      uuid: "5",
 | 
					      uuid: "5",
 | 
				
			||||||
      name: "Panthéon",
 | 
					      name: "Panthéon",
 | 
				
			||||||
      location: [48.847, 2.347],
 | 
					      location: [48.847, 2.347],
 | 
				
			||||||
      type: monument,
 | 
					      type: sightseeing,
 | 
				
			||||||
      imageURL: "https://upload.wikimedia.org/wikipedia/commons/thumb/8/80/Pantheon_of_Paris_007.JPG/1280px-Pantheon_of_Paris_007.JPG"
 | 
					      imageURL: "https://upload.wikimedia.org/wikipedia/commons/thumb/8/80/Pantheon_of_Paris_007.JPG/1280px-Pantheon_of_Paris_007.JPG"
 | 
				
			||||||
    ),
 | 
					    ),
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					  t1.landmarks.add(
 | 
				
			||||||
 | 
					    Landmark(
 | 
				
			||||||
 | 
					      uuid: "6",
 | 
				
			||||||
 | 
					      name: "Galeries Lafayette",
 | 
				
			||||||
 | 
					      location: [48.87, 2.32],
 | 
				
			||||||
 | 
					      type: shopping,
 | 
				
			||||||
 | 
					      imageURL: "https://upload.wikimedia.org/wikipedia/commons/thumb/d/de/GaleriesLafayetteNuit.jpg/220px-GaleriesLafayetteNuit.jpg"
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					  );
 | 
				
			||||||
  return t1;
 | 
					  return t1;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -1,4 +1,5 @@
 | 
				
			|||||||
import 'dart:collection';
 | 
					import 'dart:collection';
 | 
				
			||||||
 | 
					import 'dart:developer';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import 'package:flutter/material.dart';
 | 
					import 'package:flutter/material.dart';
 | 
				
			||||||
import 'package:anyway/structs/landmark.dart';
 | 
					import 'package:anyway/structs/landmark.dart';
 | 
				
			||||||
@@ -21,7 +22,7 @@ class MapWidget extends StatefulWidget {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
class _MapWidgetState extends State<MapWidget> {
 | 
					class _MapWidgetState extends State<MapWidget> {
 | 
				
			||||||
  late GoogleMapController mapController;
 | 
					  late GoogleMapController mapController;
 | 
				
			||||||
  // coordinates of Paris
 | 
					
 | 
				
			||||||
  CameraPosition _cameraPosition = CameraPosition(
 | 
					  CameraPosition _cameraPosition = CameraPosition(
 | 
				
			||||||
    target: LatLng(48.8566, 2.3522),
 | 
					    target: LatLng(48.8566, 2.3522),
 | 
				
			||||||
    zoom: 11.0,
 | 
					    zoom: 11.0,
 | 
				
			||||||
@@ -36,7 +37,7 @@ class _MapWidgetState extends State<MapWidget> {
 | 
				
			|||||||
      CameraUpdate update = CameraUpdate.newLatLng(LatLng(newLocation[0], newLocation[1]));
 | 
					      CameraUpdate update = CameraUpdate.newLatLng(LatLng(newLocation[0], newLocation[1]));
 | 
				
			||||||
      controller.moveCamera(update);
 | 
					      controller.moveCamera(update);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    // addLandmarkMarker();
 | 
					    setMapMarkers();
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  void _onCameraIdle() {
 | 
					  void _onCameraIdle() {
 | 
				
			||||||
@@ -44,47 +45,39 @@ class _MapWidgetState extends State<MapWidget> {
 | 
				
			|||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  void addLandmarkMarker() async {
 | 
					  void setMapMarkers() async {
 | 
				
			||||||
    LinkedList<Landmark>? landmarks = widget.trip?.landmarks;
 | 
					    List<Landmark> landmarks = widget.trip?.landmarks.toList() ?? [];
 | 
				
			||||||
    int i = mapMarkers.length;
 | 
					    Set<Marker> newMarkers = <Marker>{};
 | 
				
			||||||
    Landmark? current = landmarks!.elementAtOrNull(i);
 | 
					    for (int i = 0; i < landmarks.length; i++) {
 | 
				
			||||||
    if (current != null){
 | 
					      Landmark landmark = landmarks[i];
 | 
				
			||||||
      mapMarkers.add(
 | 
					      List<double> location = landmark.location;
 | 
				
			||||||
        Marker(
 | 
					      Marker marker = Marker(
 | 
				
			||||||
          markerId: MarkerId(current.name),
 | 
					        markerId: MarkerId(landmark.uuid),
 | 
				
			||||||
          position: LatLng(current.location[0], current.location[1]),
 | 
					        position: LatLng(location[0], location[1]),
 | 
				
			||||||
          icon: await CustomMarker(
 | 
					        icon: await CustomMarker(landmark: landmark, position: i).toBitmapDescriptor(
 | 
				
			||||||
            landmark: current,
 | 
					 | 
				
			||||||
            position: i+1
 | 
					 | 
				
			||||||
          ).toBitmapDescriptor(
 | 
					 | 
				
			||||||
          logicalSize: const Size(150, 150),
 | 
					          logicalSize: const Size(150, 150),
 | 
				
			||||||
          imageSize: const Size(150, 150)
 | 
					          imageSize: const Size(150, 150)
 | 
				
			||||||
          )
 | 
					        ),
 | 
				
			||||||
        )
 | 
					 | 
				
			||||||
      );
 | 
					      );
 | 
				
			||||||
      setState(() {});
 | 
					      newMarkers.add(marker);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					    setState(() {
 | 
				
			||||||
 | 
					      mapMarkers = newMarkers;
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
  @override
 | 
					  @override
 | 
				
			||||||
  Widget build(BuildContext context) {
 | 
					  Widget build(BuildContext context) {
 | 
				
			||||||
    return ListenableBuilder(
 | 
					    widget.trip?.addListener(setMapMarkers);
 | 
				
			||||||
      listenable: widget.trip!,
 | 
					 | 
				
			||||||
      builder: (context, child) {
 | 
					 | 
				
			||||||
        addLandmarkMarker();
 | 
					 | 
				
			||||||
    return GoogleMap(
 | 
					    return GoogleMap(
 | 
				
			||||||
      onMapCreated: _onMapCreated,
 | 
					      onMapCreated: _onMapCreated,
 | 
				
			||||||
      initialCameraPosition: _cameraPosition,
 | 
					      initialCameraPosition: _cameraPosition,
 | 
				
			||||||
      onCameraIdle: _onCameraIdle,
 | 
					      onCameraIdle: _onCameraIdle,
 | 
				
			||||||
          
 | 
					 | 
				
			||||||
      // onLongPress: ,
 | 
					      // onLongPress: ,
 | 
				
			||||||
      markers: mapMarkers,
 | 
					      markers: mapMarkers,
 | 
				
			||||||
      cloudMapId: '41c21ac9b81dbfd8',
 | 
					      cloudMapId: '41c21ac9b81dbfd8',
 | 
				
			||||||
    );
 | 
					    );
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
    );
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -103,20 +96,34 @@ class CustomMarker extends StatelessWidget {
 | 
				
			|||||||
    // This returns an outlined circle, with an icon corresponding to the landmark type
 | 
					    // 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
 | 
					    // As a small dot, the number of the landmark is displayed in the top right
 | 
				
			||||||
    Icon icon;
 | 
					    Icon icon;
 | 
				
			||||||
    if (landmark.type == museum) {
 | 
					    if (landmark.type == sightseeing) {
 | 
				
			||||||
      icon = Icon(Icons.museum, color: Colors.black, size: 50);
 | 
					 | 
				
			||||||
    } else if (landmark.type == monument) {
 | 
					 | 
				
			||||||
      icon = Icon(Icons.church, color: Colors.black, size: 50);
 | 
					      icon = Icon(Icons.church, color: Colors.black, size: 50);
 | 
				
			||||||
    } else if (landmark.type == park) {
 | 
					    } else if (landmark.type == nature) {
 | 
				
			||||||
      icon = Icon(Icons.park, color: Colors.black, size: 50);
 | 
					      icon = Icon(Icons.park, color: Colors.black, size: 50);
 | 
				
			||||||
    } else if (landmark.type == restaurant) {
 | 
					    } else if (landmark.type == shopping) {
 | 
				
			||||||
      icon = Icon(Icons.restaurant, color: Colors.black, size: 50);
 | 
					 | 
				
			||||||
    } else if (landmark.type == shop) {
 | 
					 | 
				
			||||||
      icon = Icon(Icons.shopping_cart, color: Colors.black, size: 50);
 | 
					      icon = Icon(Icons.shopping_cart, color: Colors.black, size: 50);
 | 
				
			||||||
 | 
					    } else if (landmark.type == start || landmark.type == finish) {
 | 
				
			||||||
 | 
					      icon = Icon(Icons.flag, color: Colors.black, size: 50);
 | 
				
			||||||
    } else {
 | 
					    } else {
 | 
				
			||||||
      icon = Icon(Icons.location_on, color: Colors.black, size: 50);
 | 
					      icon = Icon(Icons.location_on, color: Colors.black, size: 50);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    Widget? positionIndicator;
 | 
				
			||||||
 | 
					    if (landmark.type != start && landmark.type != finish) {
 | 
				
			||||||
 | 
					      positionIndicator = Positioned(
 | 
				
			||||||
 | 
					        top: 0,
 | 
				
			||||||
 | 
					        right: 0,
 | 
				
			||||||
 | 
					        child: Container(
 | 
				
			||||||
 | 
					          padding: EdgeInsets.all(5),
 | 
				
			||||||
 | 
					          decoration: BoxDecoration(
 | 
				
			||||||
 | 
					            color: Theme.of(context).primaryColor,
 | 
				
			||||||
 | 
					            shape: BoxShape.circle,
 | 
				
			||||||
 | 
					          ),
 | 
				
			||||||
 | 
					          child: Text('$position', style: TextStyle(color: Colors.white, fontSize: 20)),
 | 
				
			||||||
 | 
					        ),
 | 
				
			||||||
 | 
					      );
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return RepaintBoundary(
 | 
					    return RepaintBoundary(
 | 
				
			||||||
      child: Stack(
 | 
					      child: Stack(
 | 
				
			||||||
        children: [
 | 
					        children: [
 | 
				
			||||||
@@ -136,18 +143,7 @@ class CustomMarker extends StatelessWidget {
 | 
				
			|||||||
            ),
 | 
					            ),
 | 
				
			||||||
            child: icon,
 | 
					            child: icon,
 | 
				
			||||||
          ),
 | 
					          ),
 | 
				
			||||||
          Positioned(
 | 
					          positionIndicator ?? Container(),
 | 
				
			||||||
            top: 0,
 | 
					 | 
				
			||||||
            right: 0,
 | 
					 | 
				
			||||||
            child: Container(
 | 
					 | 
				
			||||||
              padding: EdgeInsets.all(5),
 | 
					 | 
				
			||||||
              decoration: BoxDecoration(
 | 
					 | 
				
			||||||
                color: Theme.of(context).primaryColor,
 | 
					 | 
				
			||||||
                shape: BoxShape.circle,
 | 
					 | 
				
			||||||
              ),
 | 
					 | 
				
			||||||
              child: Text('$position', style: TextStyle(color: Colors.white, fontSize: 20)),
 | 
					 | 
				
			||||||
            ),
 | 
					 | 
				
			||||||
          ),
 | 
					 | 
				
			||||||
        ],
 | 
					        ],
 | 
				
			||||||
      ),
 | 
					      ),
 | 
				
			||||||
    );
 | 
					    );
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -29,8 +29,7 @@ class _NewTripPageState extends State<NewTripPage> {
 | 
				
			|||||||
      ),
 | 
					      ),
 | 
				
			||||||
      body: Form(
 | 
					      body: Form(
 | 
				
			||||||
        key: _formKey,
 | 
					        key: _formKey,
 | 
				
			||||||
        child: 
 | 
					        child: Padding(
 | 
				
			||||||
          Padding(
 | 
					 | 
				
			||||||
          padding: const EdgeInsets.all(15.0),
 | 
					          padding: const EdgeInsets.all(15.0),
 | 
				
			||||||
          child: Column(
 | 
					          child: Column(
 | 
				
			||||||
            crossAxisAlignment: CrossAxisAlignment.start,
 | 
					            crossAxisAlignment: CrossAxisAlignment.start,
 | 
				
			||||||
@@ -59,6 +58,7 @@ class _NewTripPageState extends State<NewTripPage> {
 | 
				
			|||||||
              ),
 | 
					              ),
 | 
				
			||||||
              Divider(height: 15, color: Colors.transparent),
 | 
					              Divider(height: 15, color: Colors.transparent),
 | 
				
			||||||
              ElevatedButton(
 | 
					              ElevatedButton(
 | 
				
			||||||
 | 
					                child: const Text('Create trip'),
 | 
				
			||||||
                onPressed: () {
 | 
					                onPressed: () {
 | 
				
			||||||
                  if (_formKey.currentState!.validate()) {
 | 
					                  if (_formKey.currentState!.validate()) {
 | 
				
			||||||
                    List<double> startPoint = [
 | 
					                    List<double> startPoint = [
 | 
				
			||||||
@@ -70,8 +70,8 @@ class _NewTripPageState extends State<NewTripPage> {
 | 
				
			|||||||
                    trip.landmarks.add(
 | 
					                    trip.landmarks.add(
 | 
				
			||||||
                      Landmark(
 | 
					                      Landmark(
 | 
				
			||||||
                        location: startPoint,
 | 
					                        location: startPoint,
 | 
				
			||||||
                          name: "start",
 | 
					                        name: "Start",
 | 
				
			||||||
                          type: LandmarkType(name: 'start'),
 | 
					                        type: start,
 | 
				
			||||||
                        uuid: "pending"
 | 
					                        uuid: "pending"
 | 
				
			||||||
                      )
 | 
					                      )
 | 
				
			||||||
                    );
 | 
					                    );
 | 
				
			||||||
@@ -83,12 +83,10 @@ class _NewTripPageState extends State<NewTripPage> {
 | 
				
			|||||||
                    );
 | 
					                    );
 | 
				
			||||||
                  }
 | 
					                  }
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
                  child: const Text('Create trip'),
 | 
					 | 
				
			||||||
              ),
 | 
					              ),
 | 
				
			||||||
            ],
 | 
					            ],
 | 
				
			||||||
          ),
 | 
					          ),
 | 
				
			||||||
        )
 | 
					        )
 | 
				
			||||||
        
 | 
					 | 
				
			||||||
      )
 | 
					      )
 | 
				
			||||||
    );
 | 
					    );
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -3,12 +3,13 @@ import 'dart:convert';
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import 'package:shared_preferences/shared_preferences.dart';
 | 
					import 'package:shared_preferences/shared_preferences.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const LandmarkType sightseeing = LandmarkType(name: 'sightseeing');
 | 
				
			||||||
const LandmarkType museum = LandmarkType(name: 'Museum');
 | 
					const LandmarkType nature = LandmarkType(name: 'nature');
 | 
				
			||||||
const LandmarkType monument = LandmarkType(name: 'Monument');
 | 
					const LandmarkType shopping = LandmarkType(name: 'shopping');
 | 
				
			||||||
const LandmarkType park = LandmarkType(name: 'Park');
 | 
					// const LandmarkType museum = LandmarkType(name: 'Museum');
 | 
				
			||||||
const LandmarkType restaurant = LandmarkType(name: 'Restaurant');
 | 
					// const LandmarkType restaurant = LandmarkType(name: 'Restaurant');
 | 
				
			||||||
const LandmarkType shop = LandmarkType(name: 'Shop');
 | 
					const LandmarkType start = LandmarkType(name: 'start');
 | 
				
			||||||
 | 
					const LandmarkType finish = LandmarkType(name: 'finish');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
final class Landmark extends LinkedListEntry<Landmark>{
 | 
					final class Landmark extends LinkedListEntry<Landmark>{
 | 
				
			||||||
@@ -55,7 +56,7 @@ final class Landmark extends LinkedListEntry<Landmark>{
 | 
				
			|||||||
        'location': List<dynamic> location,
 | 
					        'location': List<dynamic> location,
 | 
				
			||||||
        'type': String type,
 | 
					        'type': String type,
 | 
				
			||||||
      }) {
 | 
					      }) {
 | 
				
			||||||
      // refine the parsing on a few
 | 
					      // refine the parsing on a few fields
 | 
				
			||||||
      List<double> locationFixed = List<double>.from(location);
 | 
					      List<double> locationFixed = List<double>.from(location);
 | 
				
			||||||
      // parse the rest separately, they could be missing
 | 
					      // parse the rest separately, they could be missing
 | 
				
			||||||
      LandmarkType typeFixed = LandmarkType(name: type);
 | 
					      LandmarkType typeFixed = LandmarkType(name: type);
 | 
				
			||||||
@@ -106,6 +107,14 @@ class LandmarkType {
 | 
				
			|||||||
    // required this.description,
 | 
					    // required this.description,
 | 
				
			||||||
    // required this.icon,
 | 
					    // required this.icon,
 | 
				
			||||||
  });
 | 
					  });
 | 
				
			||||||
 | 
					  @override
 | 
				
			||||||
 | 
					  bool operator ==(Object other) {
 | 
				
			||||||
 | 
					    if (other is LandmarkType) {
 | 
				
			||||||
 | 
					      return name == other.name;
 | 
				
			||||||
 | 
					    } else {
 | 
				
			||||||
 | 
					      return false;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -49,11 +49,10 @@ fetchTrip(
 | 
				
			|||||||
    trip.updateUUID("error");
 | 
					    trip.updateUUID("error");
 | 
				
			||||||
    if (response.data["detail"] != null) {
 | 
					    if (response.data["detail"] != null) {
 | 
				
			||||||
      trip.updateError(response.data["detail"]);
 | 
					      trip.updateError(response.data["detail"]);
 | 
				
			||||||
 | 
					      log(response.data["detail"]);
 | 
				
			||||||
      // throw Exception(response.data["detail"]);
 | 
					      // throw Exception(response.data["detail"]);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  } else {
 | 
				
			||||||
 | 
					 | 
				
			||||||
  log(response.data.toString());
 | 
					 | 
				
			||||||
    Map<String, dynamic> json = response.data;
 | 
					    Map<String, dynamic> json = response.data;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // only fill in the trip "meta" data for now
 | 
					    // only fill in the trip "meta" data for now
 | 
				
			||||||
@@ -68,6 +67,9 @@ fetchTrip(
 | 
				
			|||||||
      trip.addLandmark(landmark);
 | 
					      trip.addLandmark(landmark);
 | 
				
			||||||
      nextUUID = newUUID;
 | 
					      nextUUID = newUUID;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  log(response.data.toString());
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user