Tutorial CRUD em app Android e iOS com React Native

No tutorial de hoje eu vou lhe ensinar como criar um app Android e iOS (multiplataforma) usando React Native. Ele será um CRUD completo, ou seja, vai ter listagem, cadastro, edição e exclusão de dados usando esta tecnologia e as suas funcionalidades de armazenamento interno, na memória do próprio dispositivo.

Este é um tutorial intermediário. Se você não sabe nada de React Native, recomendo começar por esta série aqui, bem mais introdutória.

#1 – Setup do projeto

Comece um novo projeto React Native usando o comando abaixo (que requer que o expo-cli instalado na sua máquina), escolhendo a opção blank em seguida.

Sim, vai demorar um bocado para criar o projeto. Vá pegar um café. Eu espero.

Assim que terminar, entre na pasta e rode com npm start para iniciar o Metro Bundler.

Certifique-se de ter o app Expo Client no seu smartphone e escaneie o QRCode com a câmera dele para carregar a aplicação.

Aproveite para abrir o projeto no VS Code e vamos editar o App.js para começarmos a codificar o nosso app de CRUD.

Criando apps para empresas com Android

#2 – Criando a navegação

Nossa aplicação vai ter somente duas telas: a de listagem e a de cadastro. Para navegar entre elas, teremos um menu inferior em estilo de abas, que é o que vamos criar primeiro: duas telas em branco e o menu, só para deixar a estrutura pronta com a navegação funcionando.

Antes de criar as telas, vamos adicionar o suporte à navegação por abas (tabs) no nosso app. Para isso, rode os comandos abaixo no console, que adiciona a base de navegação do React Native em nosso app.

E depois, vamos adicionar mais algumas dependências necessárias ao Expo, para que a navegação funcione.

E por fim, vamos adicionar um último módulo, específico para navegação por abas.

Agora, crie um segundo arquivo na sua aplicação chamado AppForm.js, com estrutura muito semelhante ao do arquivo App.js, como abaixo.

E um terceiro arquivo chamado AppList.js, que a única diferença do arquivo anterior, por enquanto, é o texto no centro.

Isso garante que temos duas páginas em nosso app, além é claro da padrão que já veio nele (App.js) que vamos usar como base, um contâiner por fora dessas duas páginas específicas.

Agora, podemos agora criar um novo arquivo JS em nosso projeto com a configuração de navegação entre essas duas telas.

Vamos chamá-lo de AppTab.js.

Explicando rapidamente o funcionamento da navegação por abas, temos o NavigationContainer que engloba nossas regras de navegação, composta por Screens (telas). Até aí tranquilo de entender.

Mas dentro do Navigator, eu defino os estilos das nossas abas (tabs), usando propriedades como:

  • style: propriedades gerais de estilo da bottom-tab-bar;
  • tabStyle: propriedades específicas das abas em si;
  • iconStyle: propriedades dos ícones das tabs (opcional);
  • labelStyle: propriedades dos textos das tabs;
  • active/inactiveBackgroundColor: cor das abas quando selecionada ou não;
  • active/inactiveTintColor: cor do texto das abas quando selecionada ou não;

E voltando à nossa tela inicial, representada pelo arquivo App.js, vamos editar para que ele chame por padrão este arquivo de navegação que acabamos de criar e não tenha mais os estilos básicos que vem por padrão.

Basta fazer um import do nosso módulo AppTab e depois chamá-lo dentro da nossa View container, como fiz acima.

Com isso, já temos o esqueleto do nosso app, com as duas telas e a navegação pelas abas, como na imagem abaixo, que foi tirada testando com o simulador.

Abas funcionando
Abas funcionando

Agora que já temos o esqueleto, vamos alterar a legenda das tabs para representar o app que vamos criar. Vai ser um CRUD de lista de compras que, apesar de simples, vai abordar todos os passos necessários para o funcionamento de qualquer app deste tipo em outros contextos.

Para alterar a legenda das tabs é só usar o objeto options da tag Secreen e sua propriedade tabBarLabel, como abaixo (arquivo AppTab.js).

Curso Node.js e MongoDB
Curso Node.js e MongoDB

#3 – Criando o formulário

Como próximo passo, vamos começar a criar nosso formulário de cadastro, visto que sem termos alguns itens da lista cadastrados, não teríamos nada para mostrar nela. Abra o AppForm.js e preencha primeiro os imports que vamos usar.

Aqui nenhuma novidade, apenas imports padrões.

Na função default, vamos criar o seguinte formulário.

Aqui temos um texto no topo, que servirá de título e dois inputs que servirão ara coletar a descrição do item que deve ser comprado e a quantidade do mesmo. Eu adicionei um keyboardType numérico para o campo quantidade, bem como adicionei o clearButtonMode que no iOS exibe um minúsculo botão para limpar o campo.

Agora, vamos aos estilos que precisaremos.

O nome das propriedades de estilo são auto-explicativos em sua maioria, principalmente se você já conhece CSS ou frontend mobile em geral. Mesmo que você não saiba nenhum dos dois, se jogar as propriedades no Google Translator já vai entender do que se tratam.

Vale mencionar que:

  • container: é o estilo da tela como um todo. Aqui definimos cor de fundo e alinhamento geral;
  • title: é o estilo do título da tela. Definimos cor da fonte, tamanho, peso e margem;
  • inputContainer: é o estilo do formulário como um todo. Definimos margem, largura, margem interna, arredondamento das bordas, cor de fundo e com ‘stretch’ dizemos que os inputs vão ocupar todo o espaço do formulário;
  • input: é o estilo dos campos de texto. Definimos margem, altura, cor de fundo, arredondamento da borda, margem interna e tamanho da fonte;
  • button: é o estilo do botão. Definimos margem, cor de fundo, altura, arredondamento dos cantos, margem interna, tamanho da fonte, alinhamento e elevação/sombra (para dar profundidade);
  • buttonText: é o estilo do texto do botão. Apenas cor da fonte e peso aqui;

O resultado você confere na imagem abaixo.

Form Pronto
Form Pronto

E com isso, finalizamos a primeira parte deste tutorial. A segunda parte pode ser lida aqui.

Um abraço e sucesso.

Curso React Native

Publicado por

Luiz Duarte

Pós-graduado em computação, professor, empreendedor, autor, Agile Coach e programador nas horas vagas.