import 'dart:typed_data'; import 'dart:ui'; import 'package:flutter_audio_query/flutter_audio_query.dart'; import '../models/album_model.dart'; import '../models/artist_model.dart'; import '../models/song_model.dart'; import 'local_music_fetcher_contract.dart'; class LocalMusicFetcherImpl implements LocalMusicFetcher { LocalMusicFetcherImpl(this.flutterAudioQuery); final FlutterAudioQuery flutterAudioQuery; @override Future> getArtists() async { final List artistInfoList = await flutterAudioQuery.getArtists(); return artistInfoList .map((ArtistInfo artistInfo) => ArtistModel.fromArtistInfo(artistInfo)) .toSet() .toList(); } @override Future> getAlbums() async { final List albumInfoList = await flutterAudioQuery.getAlbums(); return albumInfoList .map((AlbumInfo albumInfo) => AlbumModel.fromAlbumInfo(albumInfo)) .toList(); } @override Future> getSongs() async { final List songInfoList = await flutterAudioQuery.getSongs(); return songInfoList .where((songInfo) => songInfo.isMusic) .map((SongInfo songInfo) => SongModel.fromSongInfo(songInfo)) .toList(); } @override Future getAlbumArtwork(int id) async { return flutterAudioQuery.getArtwork( type: ResourceType.ALBUM, id: id.toString(), size: const Size(500.0, 500.0)); } }