1. Nós vamos criar o form editável que é muito simples e fácil, nós vamos já que temos a base do input. Nós vamos criar dentro de form uma outra pasta chamada “FieldsAbled” com os arquivos.

  2. Nós vamos dentro do “styled.ts” dessa pasta criar o textInput, já que temos apenas o inputContainer.

    import styled from "styled-components/native";
    
    export const Input = styled.TextInput`
      font-size: 20px;
      color: ${({ theme }) => theme.colors.primaryText};
      font-weight: bold;
    `;
    
  3. Agora nós podemos criar os Inputs com os Value, já que vai ser desse jeito que nós vamos usar.

    const FieldsAbled = () => {
      return (
        <>
          <InputContainer>
            <Input value="Lucas Queiroga" />
          </InputContainer>
          <InputContainer>
            <Input value="(81) 9 9999-9999" />
          </InputContainer>
          <InputContainer>
            <Input value="[email protected]" />
          </InputContainer>
          <InputContainer>
            <Input value="DROPDOWN" />
          </InputContainer>
          <InputContainer>
            <Input
              placeholder="Senha"
              placeholderTextColor="#C0C0C1"
              secureTextEntry
            />
          </InputContainer>
          <InputContainer>
            <Input
              placeholder="Confirmar Senha"
              placeholderTextColor="#C0C0C1"
              secureTextEntry
            />
          </InputContainer>
        </>
      );
    };
    
  4. Vamos então checar se o que a gente criou está correto e aparecendo da forma que esperamos lá no form.

    const Form = () => {
      return (
        <Container>
          <EditButtonContainer>
            <EditButton
              onPress={() => {
                Alert.alert("Testando o botão!");
              }}
            >
              <EditImage source={edit} />
            </EditButton>
          </EditButtonContainer>
          {/* <FieldsDisabled /> */}
          <FieldsAbled />
        </Container>
      );
    };
    
  5. Podemos notar que está certinho, precisamos apenas dar um padding aqui no scrollView, vamos então lá para o nosso “index.tsx” de “UserProfile”

    const UserProfile = () => {
      return (
        <>
          <Container
            contentContainerStyle={{
              paddingBottom: 120,
            }}
          >
            <DefaultTitle title="MEU PERFIL" fontSize={20} />
            <ProfileInfo />
            <Form />
          </Container>
          <NavBar />
        </>
      );
    };
    
  6. Agora sim estamos com o form visível corretamente e sem problemas quando adicionarmos mais coisas nele. Vamos fazer a função de edição dos forms com o clique do botão.

  7. Vamos criar um state dentro de Form chamado “editable”, que começa em false.

    const Form = () => {
      const [editable, setEditable] = useState(false);
    
      return (
    
  8. Agora, faremos uma renderização condicional dos forms.

    return (
      <Container>
        <EditButtonContainer>
          <EditButton
            onPress={() => {
              Alert.alert("Testando o botão!");
            }}
          >
            <EditImage source={edit} />
          </EditButton>
        </EditButtonContainer>
        {!editable ? <FieldsDisabled /> : <FieldsAbled />}
      </Container>
    );
    
  9. Nós vamos agora fazer o toggle do state de acordo com o clique no botão com o lápis.

    const Form = () => {
      const [editable, setEditable] = useState(false);
    
      return (
        <Container>
          <EditButtonContainer>
            <EditButton
              onPress={() => {
                setEditable(!editable);
              }}
            >
              <EditImage source={edit} />
            </EditButton>
          </EditButtonContainer>
          {!editable ? <FieldsDisabled /> : <FieldsAbled />}
        </Container>
      );
    };
    
  10. Agora, se clicarmos no lápis, a gente vai ter a mudança do form, tanto para editar quanto para voltar para o padrão.

  11. Com isso feito, nós vamos criar um texto que vai levar o usuário para a parte de gerenciamento de endereços, onde ele vai poder ver, excluir e criar novos endereços para ele. (Dentro de fieldsEditable)

  12. Nós vamos começar criando o seu estilo e depois vamos usar ele.

    export const AddressText = styled.Text`
      font-size: 16px;
      font-weight: bold;
      margin: 15px 0px;
      text-align: center;
      color: ${({ theme }) => theme.colors.primaryText};
    `;
    
    <>
          <InputContainer>
            <Input value="Lucas Queiroga" />
          </InputContainer>
          <InputContainer>
            <Input value="(81) 9 9999-9999" />
          </InputContainer>
          <InputContainer>
            <Input value="[email protected]" />
          </InputContainer>
          <InputContainer>
            <Input value="DROPDOWN" />
          </InputContainer>
          <InputContainer>
            <Input
              placeholder="Senha"
              placeholderTextColor="#C0C0C1"
              secureTextEntry
            />
          </InputContainer>
          <InputContainer>
            <Input
              placeholder="Confirmar Senha"
              placeholderTextColor="#C0C0C1"
              secureTextEntry
            />
          </InputContainer>
          <AddressText>Gerenciar Endereços</AddressText>
        </>
    
  13. Agora que ele foi usado com sucesso, nós podemos usar o botão que vamos usar para salvar as alterações.

    	<>
        <InputContainer>
          <Input value="Lucas Queiroga" />
        </InputContainer>
        <InputContainer>
          <Input value="(81) 9 9999-9999" />
        </InputContainer>
        <InputContainer>
          <Input value="[email protected]" />
        </InputContainer>
        <InputContainer>
          <Input value="DROPDOWN" />
        </InputContainer>
        <InputContainer>
          <Input
            placeholder="Senha"
            placeholderTextColor="#C0C0C1"
            secureTextEntry
          />
        </InputContainer>
        <InputContainer>
          <Input
            placeholder="Confirmar Senha"
            placeholderTextColor="#C0C0C1"
            secureTextEntry
          />
        </InputContainer>
        <AddressText>Gerenciar Endereços</AddressText>
        <DefaultButton
          buttonText="Salvar Alterações"
          buttonHandle={() => {}}
          buttonType="primary"
          marginVertical={10}
        />
      </>
    
  14. Com isso, toda essa parte editável vai estar pronta, nós podemos prosseguir