quite a few UX improvements

This commit is contained in:
2025-03-23 20:00:24 +01:00
parent 4ad867e609
commit e148c851e1
12 changed files with 166 additions and 60 deletions

View File

@@ -0,0 +1,17 @@
import 'package:shared_preferences/shared_preferences.dart';
final class Agreement{
bool agreed;
Agreement({required this.agreed});
}
void saveAgreement(bool agreed) async {
SharedPreferences prefs = await SharedPreferences.getInstance();
prefs.setBool('agreed_to_terms_and_conditions', agreed);
}
Future<Agreement> getAgreement() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
return Agreement(agreed: prefs.getBool('agreed_to_terms_and_conditions') ?? false);
}

View File

@@ -12,7 +12,7 @@ import 'package:shared_preferences/shared_preferences.dart';
class Trip with ChangeNotifier {
String uuid;
int totalTime;
Duration totalTime;
LinkedList<Landmark> landmarks;
// could be empty as well
String? errorDescription;
@@ -44,7 +44,7 @@ class Trip with ChangeNotifier {
Trip({
this.uuid = 'pending',
this.totalTime = 0,
this.totalTime = Duration.zero,
LinkedList<Landmark>? landmarks
// a trip can be created with no landmarks, but the list should be initialized anyway
}) : landmarks = landmarks ?? LinkedList<Landmark>();
@@ -53,7 +53,7 @@ class Trip with ChangeNotifier {
factory Trip.fromJson(Map<String, dynamic> json) {
Trip trip = Trip(
uuid: json['uuid'],
totalTime: json['total_time'],
totalTime: Duration(minutes: json['total_time']),
);
return trip;
@@ -61,7 +61,7 @@ class Trip with ChangeNotifier {
void loadFromJson(Map<String, dynamic> json) {
uuid = json['uuid'];
totalTime = json['total_time'];
totalTime = Duration(minutes: json['total_time']);
notifyListeners();
}
@@ -82,9 +82,12 @@ class Trip with ChangeNotifier {
// removing the landmark means we need to recompute the time between the two adjoined landmarks
if (previous != null && next != null) {
// previous.next = next happens automatically since we are using a LinkedList
this.totalTime -= previous.tripTime ?? Duration.zero;
previous.tripTime = null;
// TODO
}
this.totalTime -= landmark.tripTime ?? Duration.zero;
notifyListeners();
}
@@ -111,7 +114,7 @@ class Trip with ChangeNotifier {
Map<String, dynamic> toJson() => {
'uuid': uuid,
'total_time': totalTime,
'total_time': totalTime.inMinutes,
'first_landmark_uuid': landmarks.first.uuid
};