react-native-track-player错误播放器已经通过setupPlayer初始化了

问题描述 投票:0回答:2

我有一个带有react-native-track-player的反应导航模式,关闭一个然后再打开它会抛出错误

The player has already been initialized via setupPlayer
。如何确保它只运行一次?我找不到这样做的方法。

useEffect(() => {
  setupPlayer();
}, []);

const setupPlayer = async() => {
  try {
    await TrackPlayer.setupPlayer();
    await TrackPlayer.updateOptions({
      capabilities: [
        Capability.Play,
        Capability.Pause,
        Capability.SkipToNext,
        Capability.SkipToPrevious
      ],
    });

    await TrackPlayer.add(podcasts);
    await gettrackdata();
    await TrackPlayer.play();
  } catch (error) {
    console.log(error);
  }
};

react-native react-navigation react-native-track-player
2个回答
1
投票

我创建了一个在 App.js 中运行一次的函数,并设置了一个标志,以后可以根据需要将其保存在上下文、存储或 AsyncStorage 中。

async function isPlayerInitialized() {
  let isPlayerInitialized = false;

  try {
    await TrackPlayer.setupPlayer();
    await TrackPlayer.updateOptions({
      capabilities: [Capability.Play, Capability.Pause, Capability.SkipToNext, Capability.SkipToPrevious]
    });

    isPlayerInitialized = true;
  } catch (e) {
    // intentionally leaved as blank
  }
}

想法:TrackPlayer 只初始化一次,但是,我不喜欢这种方法,因为我感觉应该有一个特定的方法来检查 TrackPlayer 实例是否已经设置。


0
投票

只需注释此代码即可

await TrackPlayer.setupPlayer();

© www.soinside.com 2019 - 2024. All rights reserved.