1. Vamos criar os arquivos das demais depois, por enquanto nós vamos criar a rota. Vamos começar criando da pasta “routes” o arquivo “index.tsx”

  2. Nós vamos chamar primeiro algumas coisas para começar a criar.

    import React from "react";
    import { NavigationContainer } from "@react-navigation/native";
    import { createNativeStackNavigator } from "@react-navigation/native-stack";
    import { NativeStackNavigationProp } from "@react-navigation/native-stack";
    
  3. Com isso vamos poder criar, vamos criar o “Stack”, que vai ser de onde vamos puxar toda a estrutura das telas.

    import React from "react";
    import { NavigationContainer } from "@react-navigation/native";
    import { createNativeStackNavigator } from "@react-navigation/native-stack";
    import { NativeStackNavigationProp } from "@react-navigation/native-stack";
    
    const Stack = createNativeStackNavigator();
    
  4. Agora, nós vamos criar o tipo que vamos utilizar em todas as rotas. Vamos falar o nome da rota e dizer que ela é undefined, que será o padrão. Nós iremos colocar alguma coisa como tipo da rota caso ela vá transportar através de parâmetros.

  5. Vamos começar colocar a home, que será a primeira que iremos criar.

    import React from "react";
    import { NavigationContainer } from "@react-navigation/native";
    import { createNativeStackNavigator } from "@react-navigation/native-stack";
    import { NativeStackNavigationProp } from "@react-navigation/native-stack";
    
    const Stack = createNativeStackNavigator();
    
    type PropsNavigationStack = {
    	Home: undefined;
    }
    
  6. Agora, nós iremos tipar o “NativeStackNavigationProp”, para que toda vez que definirmos uma rota ele ser chamado.

    import React from "react";
    import { NavigationContainer } from "@react-navigation/native";
    import { createNativeStackNavigator } from "@react-navigation/native-stack";
    import { NativeStackNavigationProp } from "@react-navigation/native-stack";
    
    const Stack = createNativeStackNavigator();
    
    type PropsNavigationStack = {
    	Home: undefined;
    }
    
    export type PropsStack = NativeStackNavigationProp<PropsNavigationStack>;
    
  7. Temos então a estrutura de tipagem para começar, não vamos usar elas agora, porém nas próximas aulas você vai ver o seu uso.

  8. Antes de começar a criar de fato a estrutura das rotas, vamos já criar o nosso arquivo da home, pois dessa forma a gente consegue já importar ele e usar.

  9. Dentro de “screens” vamos criar uma pasta chamada “Home” com um “index.tsx” e um “styled.ts”

  10. Dentro do “index.tsx” vamos criar a estrutura base da página utilizando a extensão que temos.

    import { View, Text } from "react-native";
    import React from "react";
    
    const Home = () => {
      return (
        <View>
          <Text>Home</Text>
        </View>
      );
    };
    
    export default Home;
    
  11. Agora, nós podemos criar de fato a estrutura de rota, porém sem ter nenhuma tela por enquanto.

    import React from "react";
    import { NavigationContainer } from "@react-navigation/native";
    import { createNativeStackNavigator } from "@react-navigation/native-stack";
    import { NativeStackNavigationProp } from "@react-navigation/native-stack";
    
    import Home from "../screens/Home";
    
    const Stack = createNativeStackNavigator();
    
    type PropsNavigationStack = {
    	Home: undefined;
    }
    
    export type PropsStack = NativeStackNavigationProp<PropsNavigationStack>;
    
    const Routes = () => {
    	return (
    		<NavigationContainer>
    			<Stack.Navigator
    				screenOptions={{
    					headerShown: false,
    				}}
    			>
    				 <Stack.Screen name="Home" component={Home} />
    			</Stack.Navigator>
    		</NavigationContainer>
    	);
    }
    
    export default Routes
    
  12. Com isso feito, já podemos ir no “App.tsx” modificar e chamar o routes.

    import { StatusBar } from "expo-status-bar";
    import Routes from "./src/routes";
    
    export default function App() {
      return (
        <>
          <Routes />
          <StatusBar style="auto" />
        </>
      );
    }
    
  13. Agora que isso foi feito, podemos também criar o “themeProvider”, iremos importar o “themeProvider” e também o tema que criamos na aula passada.

    import { StatusBar } from "expo-status-bar";
    import Routes from "./src/routes";
    
    import { ThemeProvider } from "styled-components/native";
    import { myTheme } from "./src/styles";
    
    export default function App() {
      return (
        <>
          <StatusBar style="auto" />
          <ThemeProvider theme={myTheme}>
            <Routes />
          </ThemeProvider>
        </>
      );
    }
    
  14. Com isso feito, nós agora temos o tema para toda a aplicação e as rotas criadas.