listSaves function

Future<List<SaveData>> listSaves(
  1. String savePath
)

Implementation

Future<List<SaveData>> listSaves(String savePath) async {
  final savesDir =
      Directory('${(await getApplicationDocumentsDirectory()).path}$savePath');
  if (!await savesDir.exists()) return [];
  final saves = <SaveData>[];
  await for (final save in savesDir.list()) {
    if (save is File) {
      try {
        final data = jsonDecode(await save.readAsString());

        final String sceneId = data['scene_id'];
        final String description = data['description'];
        final Map<String, dynamic> state = data['state'];
        final DateTime createdAt = (await save.stat()).changed;

        saves.add(SaveData(
            sceneId: sceneId,
            description: description,
            createdAt: createdAt,
            state: state));
      } catch (e) {
        continue;
      }
    }
  }
  return saves..sort((a, b) => b.createdAt.compareTo(a.createdAt));
}