fix: lazy-require expo-screen-orientation for Expo Go compatibility

This commit is contained in:
Developer
2026-03-11 10:13:54 +08:00
parent 64ce3031a6
commit 497dd33a35

View File

@@ -1,6 +1,8 @@
import React, { useState, useRef, useEffect } from 'react'; import React, { useState, useRef, useEffect } from 'react';
import { View, StyleSheet, Text, Platform, Modal, StatusBar, useWindowDimensions } from 'react-native'; import { View, StyleSheet, Text, Platform, Modal, StatusBar, useWindowDimensions } from 'react-native';
import * as ScreenOrientation from 'expo-screen-orientation'; // expo-screen-orientation requires a dev build; gracefully degrade in Expo Go
let ScreenOrientation: typeof import('expo-screen-orientation') | null = null;
try { ScreenOrientation = require('expo-screen-orientation'); } catch {}
import { NativeVideoPlayer } from './NativeVideoPlayer'; import { NativeVideoPlayer } from './NativeVideoPlayer';
import type { PlayUrlResponse, DanmakuItem } from '../services/types'; import type { PlayUrlResponse, DanmakuItem } from '../services/types';
@@ -25,19 +27,19 @@ export function VideoPlayer({ playData, qualities, currentQn, onQualityChange, o
const handleEnterFullscreen = async () => { const handleEnterFullscreen = async () => {
setFullscreen(true); setFullscreen(true);
if (Platform.OS !== 'web') if (Platform.OS !== 'web')
await ScreenOrientation.lockAsync(ScreenOrientation.OrientationLock.LANDSCAPE_RIGHT); await ScreenOrientation?.lockAsync(ScreenOrientation.OrientationLock.LANDSCAPE_RIGHT);
}; };
const handleExitFullscreen = async () => { const handleExitFullscreen = async () => {
setFullscreen(false); setFullscreen(false);
if (Platform.OS !== 'web') if (Platform.OS !== 'web')
await ScreenOrientation.lockAsync(ScreenOrientation.OrientationLock.PORTRAIT_UP); await ScreenOrientation?.lockAsync(ScreenOrientation.OrientationLock.PORTRAIT_UP);
}; };
useEffect(() => { useEffect(() => {
return () => { return () => {
if (Platform.OS !== 'web') if (Platform.OS !== 'web')
ScreenOrientation.lockAsync(ScreenOrientation.OrientationLock.PORTRAIT_UP); ScreenOrientation?.lockAsync(ScreenOrientation.OrientationLock.PORTRAIT_UP);
}; };
}, []); }, []);