import 'package:flutter/foundation.dart'; import 'package:flutter/services.dart'; /// Trägt fertige Musikdateien in den öffentlichen Musikordner von Android ein. /// /// Nötig, weil der Bibliotheks-Scan auf Android über den MediaStore läuft: /// Songs, die dort nicht stehen, werden beim nächsten Scan als verschwunden /// markiert. Nebeneffekt: heruntergeladene Musik ist auch in anderen Apps da. class MediaStore { const MediaStore({this.channel = _standardKanal}); static const _standardKanal = MethodChannel('de.baka.melo/media_store'); final MethodChannel channel; /// Verschiebt [quellPfad] nach `Music/Melo` und meldet die Datei dem /// MediaStore. Gibt den neuen Pfad zurück, oder `null` wenn es nicht klappt. Future veroeffentliche({ required String quellPfad, required String titel, String? kuenstler, }) async { try { return await channel.invokeMethod('publishAudio', { 'sourcePath': quellPfad, 'title': titel, 'artist': kuenstler, }); } on PlatformException catch (e) { debugPrint('MediaStore-Eintrag fehlgeschlagen: ${e.message}'); return null; } on MissingPluginException { // Desktop/Tests: dort gibt es keinen MediaStore. return null; } } }