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