import React from 'react'; import { registerRootComponent } from 'expo'; import { Asset } from 'expo-asset'; import { TouchableOpacity, View, FlatList, I18nManager } from 'react-native'; import { Themed, createAppContainer } from '@react-navigation/native'; import { ThemeContext, ThemeColors } from '@react-navigation/core'; import { MaterialCommunityIcons } from '@expo/vector-icons'; import { Assets as StackAssets, createStackNavigator, } from 'react-navigation-stack'; import { List, Divider } from 'react-native-paper'; import SimpleStack from './src/SimpleStack'; import SimpleTabs, { createSimpleTabs } from './src/SimpleTabs'; import EventsStack from './src/EventsStack'; // Comment/uncomment the following two lines to toggle react-native-screens // import { useScreens } from 'react-native-screens'; // useScreens(); // Uncomment the following line to force RTL. Requires closing and re-opening // your app after you first load it with this option enabled. I18nManager.forceRTL(false); const data = [ { component: SimpleStack, title: 'Simple Stack', routeName: 'SimpleStack' }, { component: SimpleTabs, title: 'Simple Tabs', routeName: 'SimpleTabs' }, { component: EventsStack, title: 'Events', routeName: 'EventsStack' }, ]; ['initialRoute', 'none', 'order', 'history'].forEach(backBehavior => { data.push({ component: createSimpleTabs({ backBehavior: backBehavior, initialRouteName: 'C', // more easy to test initialRoute behavior }), title: `Tabs backBehavior=${backBehavior}`, routeName: `Tabs backBehavior=${backBehavior}`, }); }); // Cache images Asset.loadAsync(StackAssets); class Home extends React.Component { static contextType = ThemeContext; static navigationOptions = { title: 'Examples', }; _renderItem = ({ item }) => ( this.props.navigation.navigate(item.routeName)} style={{ backgroundColor: ThemeColors[this.context].bodyContent }} titleStyle={{ color: ThemeColors[this.context].label }} /> ); _keyExtractor = item => item.routeName; render() { return ( <> ( )} renderItem={this._renderItem} keyExtractor={this._keyExtractor} data={data} style={{ backgroundColor: ThemeColors[this.context].body }} /> ); } } const Root = createStackNavigator( { Home: createStackNavigator({ Home }), ...data.reduce((acc, it) => { acc[it.routeName] = { screen: it.component, navigationOptions: { title: it.title, }, }; return acc; }, {}), }, { mode: 'modal', headerMode: 'none', defaultNavigationOptions: { gesturesEnabled: false, }, } ); const Navigation = createAppContainer(Root); const App = () => { let [theme, setTheme] = React.useState('light'); return ( { setTheme(theme === 'light' ? 'dark' : 'light'); }} > ); }; registerRootComponent(App);