Feature/Basic App (#1) Basic App Structure Consists of Time Progress Dashboard, Time Progress Detail View and Time Progress Creator. All of these have an AppDrawer with a Link To the Dashboard and all your Track Time Progresses, also an About Button. Commits: * Undetailed Commit more work * Changed isEditing ? in Detail Screen and Extracted FAB row to widget * Extracted Progress Detail Fab Row and Progress Detail select Date Btn to widgets * Create Progress Detail Widgets Folder * Extracted Edit Dates Row Widget * Extracted Functions from ui * Made some fields private * LoadTimerProgressList if unloaded function * Created App Yes No Dialog Widget * Using Yes No Dialog in Detail Screen * Created TimeProgress Initial Default factory * Renamed to Time Progress Tracker * Added About Button in App Drawer * Code cleanup * Code clean up and fixed Bug with null as string in Repository Signed-off-by Andreas Fahrecker <AndreasFahrecker@gmail.com>
32 lines
1.1 KiB
Dart
32 lines
1.1 KiB
Dart
import 'dart:convert';
|
|
import 'package:shared_preferences/shared_preferences.dart';
|
|
import 'package:time_progress_tracker/persistence/time_progress_entity.dart';
|
|
|
|
import 'dart:developer' as developer;
|
|
|
|
class TimeProgressRepository {
|
|
static const String _key = "time_progress_repo";
|
|
final SharedPreferences prefs;
|
|
final JsonCodec codec;
|
|
|
|
TimeProgressRepository(this.prefs, {this.codec = json});
|
|
|
|
Future<List<TimeProgressEntity>> loadTimeProgressList() {
|
|
final String jsonString = this.prefs.getString(_key);
|
|
if (jsonString == null) {
|
|
return Future<List<TimeProgressEntity>>.value([]);
|
|
}
|
|
return Future<List<TimeProgressEntity>>.value(codec
|
|
.decode(jsonString)["timers"]
|
|
.cast<Map<String, Object>>()
|
|
.map<TimeProgressEntity>(TimeProgressEntity.fromJson)
|
|
.toList(growable: false));
|
|
}
|
|
|
|
Future<bool> saveTimeProgressList(List<TimeProgressEntity> timeProgressList) {
|
|
final String jsonString = codec.encode(
|
|
{"timers": timeProgressList.map((timer) => timer.toJson()).toList()});
|
|
return this.prefs.setString(_key, jsonString);
|
|
}
|
|
}
|