working save and load functionality with custom datastructures
This commit is contained in:
@@ -14,36 +14,62 @@ class Trip {
|
||||
final LinkedList<Landmark> landmarks;
|
||||
// could be empty as well
|
||||
|
||||
|
||||
Trip({
|
||||
required this.uuid,
|
||||
required this.cityName,
|
||||
required this.landmarks,
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
factory Trip.fromJson(Map<String, dynamic> json) {
|
||||
return Trip(
|
||||
uuid: json['uuid'],
|
||||
cityName: json['cityName'],
|
||||
cityName: json['city_name'],
|
||||
landmarks: LinkedList()
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
factory Trip.fromPrefs(SharedPreferences prefs, String uuid) {
|
||||
String? content = prefs.getString('trip_$uuid');
|
||||
Map<String, dynamic> json = jsonDecode(content!);
|
||||
Trip trip = Trip.fromJson(json);
|
||||
String? firstUUID = json['entry_uuid'];
|
||||
appendLandmarks(trip.landmarks, prefs, firstUUID);
|
||||
readLandmarks(trip.landmarks, prefs, firstUUID);
|
||||
return trip;
|
||||
}
|
||||
|
||||
|
||||
Map<String, dynamic> toJson() => {
|
||||
'uuid': uuid,
|
||||
'city_name': cityName,
|
||||
'entry_uuid': landmarks.first?.uuid ?? ''
|
||||
};
|
||||
|
||||
|
||||
void toPrefs(SharedPreferences prefs){
|
||||
Map<String, dynamic> json = toJson();
|
||||
prefs.setString('trip_$uuid', jsonEncode(json));
|
||||
for (Landmark landmark in landmarks) {
|
||||
landmarkToPrefs(prefs, landmark, landmark.next);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Helper
|
||||
|
||||
appendLandmarks(LinkedList<Landmark> landmarks, SharedPreferences prefs, String? firstUUID) {
|
||||
// Helper
|
||||
readLandmarks(LinkedList<Landmark> landmarks, SharedPreferences prefs, String? firstUUID) {
|
||||
while (firstUUID != null) {
|
||||
var (head, nextUUID) = getLandmarkFromPrefs(prefs, firstUUID);
|
||||
landmarks.add(head);
|
||||
firstUUID = nextUUID;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
void removeAllTripsFromPrefs () async {
|
||||
SharedPreferences prefs = await SharedPreferences.getInstance();
|
||||
prefs.clear();
|
||||
}
|
||||
|
Reference in New Issue
Block a user