【发布时间】:2020-06-20 13:28:43
【问题描述】:
我正在尝试在 Flutter 中制作一个音乐播放器,它使用 id3 package 从给定的媒体文件中读取元数据。但由于某种原因,它只读取第一个字符或为字段返回null。
这是代码
import 'package:id3/id3.dart';
Map<String, dynamic> meta = {'': ''};
void getMetadata(String path) {
MP3Instance mp3instance = new MP3Instance(path);
if (mp3instance.parseTagsSync()) {
meta = mp3instance.getMetaTags();
print(meta);
}
}
String getTitle() {
return meta["Title"];
}
String getArtist() {
return meta["Artist"];
}
String getAlbum() {
return meta["Album"];
}
String getAPIC() {
String apic = meta["APIC"].toString();
int index = apic.indexOf('base64:');
int indexEnd = apic.indexOf('}');
if (index != -1) {
return apic.substring((index + 8), indexEnd);
} else {
return apic;
}
}
我正在使用 initState() 中的值来扩展列表视图,如下所示
void initState() {
_returnedSongs = returnMusicList();
for (FileSystemEntity entity in _returnedSongs) {
path.add(entity.path);
}
for (String str in path) {
getMetadata(str);
title = getTitle();
artist = getTitle();
album = getAlbum();
apic = getAPIC();
listMusic.add(Music(title, artist, album, apic));
}
super.initState();
}
【问题讨论】: