import * as NavigationBar from 'expo-navigation-bar'; import * as React from 'react'; import { Platform, ScrollView, Text } from 'react-native'; import { useSafeAreaFrame, useSafeAreaInsets } from 'react-native-safe-area-context'; import Button from '../components/Button'; import { Page, Section } from '../components/Page'; import { getRandomColor } from '../utilities/getRandomColor'; function usePosition(): [ NavigationBar.NavigationBarPosition | null, (position: NavigationBar.NavigationBarPosition) => void, ] { const [position, setPosition] = React.useState(null); React.useEffect(() => { let isMounted = true; NavigationBar.unstable_getPositionAsync().then((position) => { if (isMounted) { setPosition(position); } }); return () => { isMounted = false; }; }, []); const setNewPosition = React.useCallback( (position: NavigationBar.NavigationBarPosition) => { NavigationBar.setPositionAsync(position); setPosition(position); }, [setPosition] ); return [position, setNewPosition]; } export default function NavigationBarScreen() { return ( {Platform.OS !== 'android' && ( ⚠️ NavigationBar is Android-only )}
); } NavigationBarScreen.navigationOptions = { title: 'Navigation Bar', }; function VisibilityExample() { const visibility = NavigationBar.useVisibility(); const nextVisibility = visibility === 'visible' ? 'hidden' : 'visible'; return (