[英]How to avoid PlayerInterruptedException (Connection aborted) from just audio inside TabBar?
我正在使用just_audio: ^0.9.29
來播放音頻。 該頁面包含TabBar()
和Two Tabs
。 播放器位於第一個選項卡內。
音頻播放器代碼:
GestureDetector(
onTap: () => taskerProfileViewModel.playAudio(),
child: CircleAvatar(
backgroundColor: kBlack,
child: taskerProfileViewModel.isPlaying.value
? const Icon(
Icons.pause,
color: kWhite,
)
: const Icon(
Icons.play_arrow,
color: kWhite,
),
),
);
void setAudioUrl({required String url}) async {
audioPlayer.setUrl("$baseUrl/$url", initialPosition: Duration.zero);
Duration? audioDuration;
try {
audioDuration = await audioPlayer.load();
} on PlayerInterruptedException catch (e) {
if (kDebugMode) {
print("Exception $e");
}
}
if (audioDuration != null) {
audioEndTime.value =
"${audioDuration.inMinutes.remainder(60).toString().padLeft(2, "0")}:${audioDuration.inSeconds.remainder(60).toString().padLeft(2, "0")}";
}
}
我在 initstate 中調用setAudioUrl()
initstate
。
當我交換標簽時沒有問題。 但是,當我點擊選項卡時,音頻播放器拋出此異常PlayerInterruptedException (Connection aborted)
。
我如何捕獲並忽略此異常?
setUrl
應該在try catch
塊內,它是一個異步方法,所以它需要一個await
關鍵字,試試這段代碼:
void setAudioUrl({required String url}) async {
Duration? audioDuration;
try {
await audioPlayer.setUrl("$baseUrl/$url", initialPosition: Duration.zero);
audioDuration = await audioPlayer.load();
} on PlayerInterruptedException catch (e) {
if (kDebugMode) {
print("Exception $e");
}
}
if (audioDuration != null) {
audioEndTime.value =
"${audioDuration.inMinutes.remainder(60).toString().padLeft(2, "0")}:${audioDuration.inSeconds.remainder(60).toString().padLeft(2, "0")}";
}
}
希望能幫助到你。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.