1import { LinkingOptions, NavigationContainer } from '@react-navigation/native'; 2import { createStackNavigator } from '@react-navigation/stack'; 3import * as Linking from 'expo-linking'; 4import * as React from 'react'; 5import { Text } from 'react-native'; 6import { GestureHandlerRootView } from 'react-native-gesture-handler'; 7 8import MainNavigators from './MainNavigators'; 9import MainTabNavigator from './MainTabNavigator'; 10import RedirectScreen from '../screens/RedirectScreen'; 11import SearchScreen from '../screens/SearchScreen'; 12 13const Switch = createStackNavigator(); 14 15export const linking: LinkingOptions<object> = { 16 prefixes: [Linking.createURL('/')], 17 config: { 18 screens: { 19 main: { 20 initialRouteName: 'apis', 21 screens: { 22 apis: MainNavigators.apis.linking, 23 components: MainNavigators.components.linking, 24 }, 25 }, 26 search: { 27 screens: { 28 search: 'search', 29 }, 30 }, 31 }, 32 }, 33}; 34 35export default function RootNavigation() { 36 return ( 37 <GestureHandlerRootView style={{ flex: 1 }}> 38 <NavigationContainer linking={linking} fallback={<Text>Loading…</Text>}> 39 <Switch.Navigator screenOptions={{ presentation: 'modal', headerShown: false }}> 40 <Switch.Screen name="main" component={MainTabNavigator} /> 41 <Switch.Screen name="redirect" component={RedirectScreen} /> 42 <Switch.Screen 43 name="searchNavigator" 44 component={SearchScreen} 45 options={{ cardStyle: { backgroundColor: 'transparent' } }} 46 /> 47 </Switch.Navigator> 48 </NavigationContainer> 49 </GestureHandlerRootView> 50 ); 51} 52