【问题标题】:How to use id3 plugging in FlutterFlutter中如何使用id3插件
【发布时间】:2020-04-26 10:57:47
【问题描述】:

只获取每个标签的第一个字母,或者我可能在某个地方错了

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】:

    我打印出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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-10-24
      • 2019-06-18
      • 2018-08-25
      • 2018-11-30
      • 2019-10-20
      • 2021-01-10
      • 2019-12-01
      • 1970-01-01
      相关资源
      最近更新 更多