首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在快速单击按钮时,有没有消除错误的方法?

在快速单击按钮时,有没有消除错误的方法?
EN

Stack Overflow用户
提问于 2022-10-22 17:29:12
回答 1查看 36关注 0票数 0

下面有一段代码,每次我按下按钮时都会播放声音。

代码语言:javascript
复制
AudioPlayer player = AudioPlayer();
代码语言:javascript
复制
Future<void> playSound({required String soundStr}) async {
 player.setAsset(soundStr);
 player.play();
}

但是每当我快速地按下按钮,有时它就会显示出这个错误。如何消除此错误?我试着添加player.stop();,但是它仍然是一样的。

代码语言:javascript
复制
E/flutter ( 4312): [ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: PlatformException(abort, Loading interrupted, null, null)
E/flutter ( 4312): #0      AudioPlayer._setPlatformActive.checkInterruption (package:just_audio/just_audio.dart:1236:7)
E/flutter ( 4312): #1      AudioPlayer._setPlatformActive.setPlatform (package:just_audio/just_audio.dart:1347:11)
E/flutter ( 4312): <asynchronous suspension>
E/flutter ( 4312): 
E/flutter ( 4312): [ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: PlatformException(abort, Loading interrupted, null, null)
E/flutter ( 4312): 

编辑:我尝试添加await

代码语言:javascript
复制
Future<void> playSound({required String soundStr}) async {
 await player.setAsset(soundStr);
 await player.play();
}

如果我快速按下按钮,它仍然会有错误。虽然现在已经不一样了。

代码语言:javascript
复制
E/flutter (21654): [ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: Connection aborted
E/flutter (21654): #0      AudioPlayer._load (package:just_audio/just_audio.dart:843:11)
E/flutter (21654): <asynchronous suspension>
E/flutter (21654): #1      AudioPlayer.load (package:just_audio/just_audio.dart:770:14)
E/flutter (21654): <asynchronous suspension>
E/flutter (21654): #2      AudioPlayer.setAudioSource (package:just_audio/just_audio.dart:745:18)
E/flutter (21654): <asynchronous suspension>
E/flutter (21654): #3      playSound (package:super_pinoy_quiz/common/generic_methods.dart:396:3)
E/flutter (21654): <asynchronous suspension>
E/flutter (21654): 

我正在使用这个包: just_audio:^0.9.29,虽然我尝试使用不同的包,但它在快速点击按钮时也遇到了相同的错误: audioplayers:^1.1.1

EN

回答 1

Stack Overflow用户

发布于 2022-10-22 17:55:40

setAssetplay都是未来的方法,您可以等待设置资产。

代码语言:javascript
复制
  Future<void> playSound({required String soundStr}) async {
   await player.setAsset(soundStr);
   await player.play();
  }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74165669

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档