如何在Flutter中使用id3插入

问题描述 投票:0回答:1

仅获得每个标签的第一个字母,或者在某处可能是我错了

void info() {
MP3Instance mp3instance = new MP3Instance("/storage/emulated/0/Download/Army_320-(Mr-Jat.in).mp3");
    if(mp3instance.parseTagsSync()){
      print(mp3instance.getMetaTags());
      print(mp3instance.metaTags['Title']);
      print(mp3instance.metaTags['Artist']);
      print(mp3instance.metaTags['Album']);
      print(mp3instance.metaTags['Year']);
      print(mp3instance.metaTags['Genre']);
    }
}

这是输出

I/flutter ( 6995): {Version: v2.3.0, Title: A
I/flutter ( 6995): A
I/flutter ( 6995): S
I/flutter ( 6995): H
I/flutter ( 6995): 2
I/flutter ( 6995): M

仅出现文本的第一个字母和停止位置。

android flutter dart mp3 id3
1个回答
0
投票

我打印出与mp3instance.getMetaTags()等效的ASCII码,并意识到该字符串中包含一些ASCII control characters,该字符串终止了print()语句。

经过研究后,我使用此方法删除了控制字符:

String normalizeString(String s) {
    var encoded = ascii.encode(s.toString());
    List<int> normalized = new List.from(encoded.map((e) => (e < 32) ? 32 : e));
    return ascii.decode(normalized);
}

我按如下所示打印了规范化的字符串:

 print( "Before normalizing: " + mp3instance.getMetaTags().toString() );
 String normalString = normalizeString( mp3instance.getMetaTags().toString() );
 print( "After normalizing: " + normalString);
 print( "Normalized title: " + mp3instance.metaTags['Title'].toString() );

更多资源:

Replace non ASCII character from string

Another id3 tagging flutter library

© www.soinside.com 2019 - 2024. All rights reserved.