diff options
Diffstat (limited to 'lib/screens')
| -rw-r--r-- | lib/screens/level.dart | 6 | ||||
| -rw-r--r-- | lib/screens/level_selection.dart | 28 | 
2 files changed, 19 insertions, 15 deletions
| diff --git a/lib/screens/level.dart b/lib/screens/level.dart index e2b2195..9c5823b 100644 --- a/lib/screens/level.dart +++ b/lib/screens/level.dart @@ -244,11 +244,7 @@ class _LevelState extends State<Level> with SingleTickerProviderStateMixin {                  )),            ),            body: Stack(children: [ -            Arrows( -                notes: notes, -                position: _position != null -                    ? _position!.inMilliseconds.toDouble() -                    : 0.0), +            Arrows(notes: notes),              Positioned(                top: 50,                width: MediaQuery.of(context).size.width, diff --git a/lib/screens/level_selection.dart b/lib/screens/level_selection.dart index 41eb4f7..7241ad7 100644 --- a/lib/screens/level_selection.dart +++ b/lib/screens/level_selection.dart @@ -62,16 +62,24 @@ class _LevelSelectionState extends State<LevelSelection> {      try {        // List all files and folders in the directory        List<Simfile> simfiles = directory -          .listSync() -          .where((entity) => FileSystemEntity.isDirectorySync(entity.path)) -          .map((entity) { -        Simfile simfile = Simfile(entity.path); -        simfile.load(); -        return simfile; -      }).toList(); -      simfiles.sort((a, b) => a.tags['TITLE']!.compareTo(b.tags['TITLE']!)); - -      return simfiles; +          .listSync(recursive: true) +          .where((entity) => entity.path.endsWith('.sm')) +          .map((entity) => Simfile(entity.path)) +          .toList(); + +      List<bool> successfullLoads = +          await Future.wait(simfiles.map((simfile) => simfile.load())); +      List<Simfile> simfilesFiltered = []; +      for (int i = 0; i < simfiles.length; i++) { +        if (successfullLoads[i]) { +          simfilesFiltered.add(simfiles[i]); +        } +      } + +      simfilesFiltered +          .sort((a, b) => a.tags['TITLE']!.compareTo(b.tags['TITLE']!)); + +      return simfilesFiltered;      } catch (e) {        print("Error reading directory: $e");        return []; | 
