1. Vamos criar um componente de título, que será padrão em algumas telas. Onde teremos um botão de voltar, e o título centralizado.

  2. Nós já temos dentro de “common” o “DefaultButton”, teremos agora o nosso “DefaultTitle”, para usarmos nas páginas onde será necessário.

  3. Dentro dela, vamos criar os arquivos padrão, index e styled.

  4. Vamos criar os estilos. Nós vamos primeiro criar o container que vai envolver tudo que temos, e o nosso fontsize será via props, para que a gente tenha algo que possamos mudar de acordo com a página onde estamos.

    import styled from "styled-components/native";
    
    type TitleProps = {
      fontSize: number;
    };
    
    export const Container = styled.View`
      flex-direction: row;
      align-items: center;
      justify-content: space-between;
      margin: 20px;
      margin-top: 0;
      margin-bottom: 0;
    `;
    
    export const Title = styled.Text<TitleProps>`
      font-size: ${(props) => props.fontSize}px;
      color: ${({ theme }) => theme.colors.primaryText};
      font-weight: bold;
    `;
    
  5. Agora, nós vamos criar um espaço vazio do mesmo tamanho do botão de voltar, para que através do “space-between”, o título da tela fique centralizado.

    import styled from "styled-components/native";
    
    type TitleProps = {
      fontSize: number;
    };
    
    export const TitleBackContainer = styled.View`
      flex-direction: row;
      align-items: center;
      justify-content: space-between;
      margin: 20px;
      margin-top: 0;
      margin-bottom: 0;
    `;
    
    export const Title = styled.Text<TitleProps>`
      font-size: ${(props) => props.fontSize}px;
      color: ${({ theme }) => theme.colors.primaryText};
      font-weight: bold;
    `;
    
    export const EmptyView = styled.View`
      width: 40px;
      height: 40px;
    `;
    
  6. Agora nós podemos utilizar tudo que criamos. Esse espaço vazio que criamos ficará invisível, para que a gente use ele somente para centralização.

  7. Nós teremos vindo via props também os valores de fontSize e titulo, mas por enquanto podemos deixar normal.

    import React from "react";
    import { Container, EmptyView, Title } from "./styled";
    import BackArrow from "../BackArrow";
    
    const DefaultTitle = () => {
      return (
        <Container>
          <BackArrow marginLeft={0} />
          <Title fontSize={20}>{"Teste de título"}</Title>
          <EmptyView />
        </Container>
      );
    };
    
    export default DefaultTitle;
    
  8. Agora, com isso feito, basta utilizarmos lá no UserProfile

    const UserProfile = () => {
      return (
        <>
          <Container>
            <DefaultTitle />
          </Container>
          <NavBar />
        </>
      );
    };
    
  9. Nós vamos fazer o sistema de props agora para poder ter a alteração automática do título

    interface TitleProps {
      fontSize: number;
      title: string;
    }
    
    const DefaultTitle = ({ fontSize, title }: TitleProps) => {
      return (
        <Container>
          <BackArrow marginLeft={0} />
          <Title fontSize={fontSize}>{title}</Title>
          <EmptyView />
        </Container>
      );
    };
    
  10. E por fim, isso na tela, passando para o título

    const UserProfile = () => {
      return (
        <>
          <Container>
            <DefaultTitle title="MEU PERFIL" fontSize={20} />
          </Container>
          <NavBar />
        </>
      );
    };
    
  11. Agora nós temos o título default na nossa tela.<DefaultTitle title="MEU PERFIL" fontSize={20} />