import 'dart:convert'; import 'package:shared_preferences/shared_preferences.dart'; import 'package:time_progress_calculator/persistence/time_progress_entity.dart'; class TimeProgressRepository { static const String _key = "time_progress_repo"; final SharedPreferences prefs; final JsonCodec codec; TimeProgressRepository(this.prefs, {this.codec = json}); Future> loadTimeProgressList() { final String jsonString = this.prefs.getString(_key); return codec .decode(jsonString)["timers"] .cast>() .map(TimeProgressEntity.fromJson) .toList(growable: false); } Future saveTimeProgressList(List timeProgressList) { final String jsonString = codec .encode({"timers": timeProgressList.map((timer) => timer.toJson()).toList()}); return this.prefs.setString(_key, jsonString); } }