You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter实现卡片翻转时播放音频功能遇阻求助

解决FlipCard点击无法触发音频播放的问题

问题核心在于FlipCard组件内部已经自带点击翻转逻辑,外层包裹的InkWell点击事件会被FlipCard拦截,导致playSound方法无法触发。底部按钮能正常工作是因为它的点击事件没有被其他组件拦截。

修复方案

移除外层的InkWell,直接利用FlipCard提供的onFlip回调触发音频播放:

修改代码中的ListView.builder部分和_HomeScreenCard方法:

// 修改ListView.builder的itemBuilder
itemBuilder: (BuildContext context, int index) {
  return _HomeScreenCard(
    _items[index]["name"],
    _items[index]["description"],
    context,
    onFlip: () {
      playSound('a070.mp3');
    },
  );
},

// 修改_HomeScreenCard方法,添加onFlip参数
Widget _HomeScreenCard(String textFront, String textBack, context, {VoidCallback? onFlip}) {
  return FlipCard(
    fill: Fill.fillBack,
    direction: FlipDirection.HORIZONTAL,
    onFlip: onFlip, // 绑定翻转回调
    front: _HomeScreenCardFront(textFront, context),
    back: _HomeScreenCardBack(textBack, context),
  );
}

额外优化(可选)

如果需要仅在卡片翻转到背面时播放音频,可以通过FlipCard的状态判断:

// 修改_HomeScreenCard的onFlip回调
onFlip: () {
  final cardState = FlipCardState.of(context);
  // 仅在翻转到背面时播放音频
  if (!cardState!.isFront) {
    playSound('a070.mp3');
  }
},

修改完成后,点击卡片翻转的同时就能正常播放音频,效果与底部测试按钮一致。

内容的提问来源于stack exchange,提问作者Mr2C2R

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 07:26:06