【发布时间】:2020-10-16 04:07:56
【问题描述】:
我正在开发音乐播放器应用程序????在颤抖中。我正在使用audioplayers 插件来获取所有 mp3 文件并播放音乐。 我创建了一个单独的 AudioFunctions 类来执行所有这些过程,如下所示。
class AudioFunctions{
FlutterAudioQuery audioQuery;
AudioPlayer audioPlayer;
List<SongInfo> songs;
AudioFunctions(){
this.audioQuery = FlutterAudioQuery();
this.audioPlayer = AudioPlayer();
this.songs = [];
}
getLocalSongs() async => this.songs = await audioQuery.getSongs();
String optimiseSongTitles(int index){
String songTitle = '';
if (this.songs[index].displayName.contains('-')){
songTitle = this.songs[index].displayName.split('-')[0];
}
else if(this.songs[index].displayName.contains('_')){
songTitle = this.songs[index].displayName.split('_')[0];
}
return songTitle;
}
void playLocalSong(String path){
audioPlayer.play(path,isLocal: true,);
}
void pauseLocalSong(){
audioPlayer.pause();
}
Stream<Duration> getLength() {
return audioPlayer.onDurationChanged;
}
Stream<Duration> getPosition() {
return audioPlayer.onAudioPositionChanged;
}
Future<int> changeSlider(Duration d){
return audioPlayer.seek(d);
}
}
现在我可以访问这个类来检索相关数据了???? .
运行getLocalSongs 会将所有本地歌曲的列表保存到类中的songs 变量中。但是,每次创建 AudioFunctions 对象时,我都必须运行它。那么,在每个屏幕上.????
我应该使用单例还是提供者?由于我是 Flutter 的新手,我不知道如何使用它们中的任何一个,并且我怀疑是否可以在提供程序中使用对象。????
表达爱意????并帮助一个菜鸟????
【问题讨论】:
-
你可以在提供者中使用任何你想要的东西。单例的问题在于测试,这会很困难。
标签: flutter flutter-dependencies flutter-provider