Повторный рендеринг Expo Video при изменении состояния - PullRequest
0 голосов
/ 27 мая 2020

У меня есть видео, где все, что я хочу, это кнопка воспроизведения наверху. Я добился этого с помощью следующего:

                <View style={{ backgroundColor: 'yellow', justifyContent: 'center', alignItems: 'center'}}>
                    <Video
                        ref={setupVideo}
                        source={require('../../assets/AppSampleCoverVideo.mp4')} // TODO:
                        rate={1.0}
                        volume={1.0}
                        isMuted={false}
                        shouldPlay={isPlaying}
                        resizeMode='contain'
                        isLooping={false}
                        style={styles.setupVideo}
                        //onPlaybackStatusUpdate={onPlaybackStatusUpdate}
                        //useNativeControls={true}
                    />

                    <TouchableOpacity style={styles.playButton} onPress={toggleVideoPlay}>
                        {
                            !isPlaying ? (
                                <Ionicons style={styles.playIcon} color='white' size={ Dimensions.get('window').width / 5 } name='ios-play' />
                            ) : null
                        }
                    </TouchableOpacity>

                </View>

Я управляю видео следующим образом:

    const [isPlaying, setIsPlaying] = useState(false)
    const setupVideo = useRef(null);

    const toggleVideoPlay = async () => {
        try {
            let videoStatus = await setupVideo.current.getStatusAsync();
            if(videoStatus.isPlaying) {
                return setupVideo.current.pauseAsync();
            } else {
                if(videoStatus.durationMillis === videoStatus.positionMillis) return setupVideo.current.replayAsync();
                return setupVideo.current.playAsync();
            }
        } catch(err) {

        }
    }

Однако я хочу иметь возможность отслеживать, когда видео воспроизводится и когда это не для того, чтобы установить isPlaying и контролировать, отображается ли значок кнопки воспроизведения или нет. Все, что я пробовал, приводит либо к мерцанию видео при вызове setIsPlaying, либо к повторному рендерингу видео и вообще не воспроизводится.

Любая помощь приветствуется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...