ui improvements for trips and landmarks
This commit is contained in:
		| @@ -3,6 +3,14 @@ import 'dart:convert'; | ||||
|  | ||||
| import 'package:shared_preferences/shared_preferences.dart'; | ||||
|  | ||||
|  | ||||
| const LandmarkType museum = LandmarkType(name: 'Museum'); | ||||
| const LandmarkType monument = LandmarkType(name: 'Monument'); | ||||
| const LandmarkType park = LandmarkType(name: 'Park'); | ||||
| const LandmarkType restaurant = LandmarkType(name: 'Restaurant'); | ||||
| const LandmarkType shop = LandmarkType(name: 'Shop'); | ||||
|  | ||||
|  | ||||
| final class Landmark extends LinkedListEntry<Landmark>{ | ||||
|   // A linked node of a list of Landmarks | ||||
|   final String uuid; | ||||
| @@ -55,11 +63,12 @@ final class Landmark extends LinkedListEntry<Landmark>{ | ||||
|       final imageURL = json['image_url'] as String?; | ||||
|       final description = json['description'] as String?; | ||||
|       var duration = Duration(minutes: json['duration'] ?? 0) as Duration?; | ||||
|       if (duration == const Duration()) {duration = null;}; | ||||
|       // if (duration == const Duration()) {duration = null;}; | ||||
|       final visited = json['visited'] as bool?; | ||||
|       var tripTime = Duration(minutes: json['time_to_reach_next'] ?? 0) as Duration?; | ||||
|        | ||||
|       return Landmark( | ||||
|         uuid: uuid, name: name, location: locationFixed, type: typeFixed, isSecondary: isSecondary, imageURL: imageURL, description: description, duration: duration, visited: visited); | ||||
|         uuid: uuid, name: name, location: locationFixed, type: typeFixed, isSecondary: isSecondary, imageURL: imageURL, description: description, duration: duration, visited: visited, tripTime: tripTime); | ||||
|     } else { | ||||
|       throw FormatException('Invalid JSON: $json'); | ||||
|     } | ||||
| @@ -81,7 +90,8 @@ final class Landmark extends LinkedListEntry<Landmark>{ | ||||
|     'image_url': imageURL, | ||||
|     'description': description, | ||||
|     'duration': duration?.inMinutes, | ||||
|     'visited': visited | ||||
|     'visited': visited, | ||||
|     'trip_time': tripTime?.inMinutes, | ||||
|   }; | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -1,46 +0,0 @@ | ||||
| // import "package:anyway/structs/landmark.dart"; | ||||
|  | ||||
| // class Linked<Landmark> { | ||||
| //   Landmark? head; | ||||
|    | ||||
| //   Linked(); | ||||
|  | ||||
| //   // class methods | ||||
| //   bool get isEmpty => head == null; | ||||
|  | ||||
| //   // Add a new node to the end of the list | ||||
| //   void add(Landmark value) { | ||||
| //     if (isEmpty) { | ||||
| //       // If the list is empty, set the new node as the head | ||||
| //       head = value; | ||||
| //     } else { | ||||
| //       Landmark? current = head; | ||||
| //       while (current!.next != null) { | ||||
| //         // Traverse the list to find the last node | ||||
| //         current = current.next; | ||||
| //       } | ||||
| //       current.next = value; // Set the new node as the next node of the last node | ||||
| //     } | ||||
| //   } | ||||
|  | ||||
| //   // Remove the first node with the given value | ||||
| //   void remove(Landmark value) { | ||||
| //     if (isEmpty) return; | ||||
|  | ||||
| //     // If the value is in the head node, update the head to the next node | ||||
| //     if (head! == value) { | ||||
| //       head = head.next; | ||||
| //       return; | ||||
| //     } | ||||
|  | ||||
| //     var current = head; | ||||
| //     while (current!.next != null) { | ||||
| //       if (current.next! == value) { | ||||
| //         // If the value is found in the next node, skip the next node | ||||
| //         current.next = current.next.next; | ||||
| //         return; | ||||
| //       } | ||||
| //       current = current.next; | ||||
| //     } | ||||
| //   } | ||||
| // } | ||||
| @@ -16,11 +16,15 @@ class Trip with ChangeNotifier { | ||||
|   // could be empty as well | ||||
|  | ||||
|   Future<String> get cityName async { | ||||
|     List<double>? location = landmarks.firstOrNull?.location;  | ||||
|     if (GeocodingPlatform.instance == null) { | ||||
|       return '${landmarks.first.location[0]}, ${landmarks.first.location[1]}'; | ||||
|       return '$location'; | ||||
|     } else if (location == null) { | ||||
|       return 'Unknown'; | ||||
|     } else{ | ||||
|       List<Placemark> placemarks = await placemarkFromCoordinates(location[0], location[1]); | ||||
|       return placemarks.first.locality ?? 'Unknown'; | ||||
|     } | ||||
|     List<Placemark> placemarks = await placemarkFromCoordinates(landmarks.first.location[0], landmarks.first.location[1]); | ||||
|     return placemarks.first.locality ?? 'Unknown'; | ||||
|   } | ||||
|  | ||||
|  | ||||
| @@ -56,6 +60,11 @@ class Trip with ChangeNotifier { | ||||
|     notifyListeners(); | ||||
|   } | ||||
|  | ||||
|   void removeLandmark(Landmark landmark) { | ||||
|     landmarks.remove(landmark); | ||||
|     notifyListeners(); | ||||
|   } | ||||
|  | ||||
|   factory Trip.fromPrefs(SharedPreferences prefs, String uuid) { | ||||
|     String? content = prefs.getString('trip_$uuid'); | ||||
|     Map<String, dynamic> json = jsonDecode(content!); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user