1. Agora a gente vai criar a estrutura da tela de chat individual. Vamos começar criando uma pasta chamada “Chat” dentro de “Screens” com o index e o styled

  2. Agora que temos os arquivos, vamos criar o container no styled.

    import styled from "styled-components/native";
    import Constants from "expo-constants";
    
    const statusBarHeight = Constants.statusBarHeight;
    
    export const Container = styled.View`
      flex: 1;
      background-color: ${({ theme }) => theme.colors.backgroundLight};
      padding-top: ${statusBarHeight}px;
    `;
    
  3. Com o container criado, vamos colocar o navbar, o título não será colocado pois a gente vai ter outra estrutura aqui em cima.

    return (
      <Container>
        <NavBar />
      </Container>
    );
    
  4. Agora a gente vai criar o tipo da rota, que também terá any por conta da estrutura que temos de mensagens

    export type PropsNavigationStack = {
      // ... Outros códigos
      AllChats: undefined;
      Chat: {
        chatInfo: any;
      };
    };
    
  5. Podemos então criar a rota de fato

    const Routes = () => {
      return (
        <NavigationContainer>
          <Stack.Navigator
            screenOptions={{
              headerShown: false,
            }}
          >
            {/* Outros códigos */}
            <Stack.Screen name="AllChats" component={AllChats} />
            <Stack.Screen name="Chat" component={Chat} />
          </Stack.Navigator>
        </NavigationContainer>
      );
    };
    
  6. Agora podemos fazer com que através da navegação do AllChats o usuário venha para cá, vamos lá em ChatCard para poder botar a navegação, e vamos mandar o nosso data para o Chat.

    return (
      <Container
        activeOpacity={0.85}
        onPress={() => {
          navigation.navigate("Chat", {
            chatInfo: data,
          });
        }}
      >
        ...
      </Container>
    );
    
  7. Agora nós vamos dentro de Chat criar a tipagem para receber as informações através da rota

    type Props = NativeStackScreenProps<PropsNavigationStack, "Chat">;
    
    const Chat = ({ route }: Props) => {
    
  8. Com as informações sendo recebidas, vamos dar um console para ver que está tudo correto aqui dentro.

    const Chat = ({ route }: Props) => {
    	console.log(route.params)
    
  9. Podemos verificar no console que estamos recebendo o data de cada um dos nossos cards, podemos excluir o console