首页 > 解决方案 > AssetsAudioPlayer 只播放最后一个索引的音频

问题描述

我正在使用列表视图在我的颤振应用程序中显示图像和文本。我已将资产路径和文本存储在 Json 文件中,并将其转换为列表。获取图像资产路径并显示正确的路径似乎没有问题,但从其资产播放音频文件时并非如此。

我正在使用这个包import 'package:assets_audio_player/assets_audio_player.dart';

宣言 final AssetsAudioPlayer playAudio = AssetsAudioPlayer();

这是主要的小部件

 @override
 Widget build(BuildContext context) {
    Widget _buildRow(int idx) {
      for (var translations in widget.category.translations) {
        _wordList = widget.category.translations[idx];
        return Container(
          height: 88.0,
          child: Card(
            child: ListTile(
              onTap: () {
                playAudio.open(
                  Audio(_wordList.audio),
                );
                // player.play(_wordList.audio);
                log(_wordList.audio, name: 'my.other.category');
              },
              onLongPress: () {},
              leading: SizedBox(
                width: 50.0,
                height: 88.0,
                child: Image(
                  image: AssetImage(_wordList.emoji),
                  fit: BoxFit.contain,
                ),
              ),
              title: Text(
                _wordList.akan,
                style: TextStyle(fontSize: 18),
              ),
              subtitle: Text(
                _wordList.english,
                style: TextStyle(fontSize: 18, color: Colors.black),
              ),
              trailing: const Icon(Icons.play_arrow, size: 28),
            ),
          ),
        );
      }
    }

由于 json 文件中的图像资产没有问题,我不明白为什么音频会这样存储它们,

 {
  "english": "mother",
  "akan": "ɛna",
  "emoji": "assets/icons/family_mother.png",
  "audio": "assets/audio/family_mother.mp3"
},

标签: flutterdart

解决方案


通过迭代生成新的 listtile 小部件然后将其放入 listview 来解决它


推荐阅读