Skip to content

Latest commit

 

History

History
167 lines (122 loc) · 6.11 KB

Aula05.md

File metadata and controls

167 lines (122 loc) · 6.11 KB

Aula 5 (07/08/2020) - Finalizando app mobile

details>

Videos Youtube
  1. Trilha OmniStack Trilha OmniStack Aula 4 Trilha OmniStack Aula 5
Wikis

Wiki Home 4. Aula 4 5. Aula 5

GitHub Pages
  1. Web
  2. Mobile

Conectando Mobile

Precisamos instalar novamente a biblioteca que facilita o consumo de API externas pela aplicação: yarn add axios

Create Project

Como no projeto Web, crie uma pasta services e dentro dela o arquivo api.ts.

Create Project

O IP que utilizamos é o disponibilizado pelo Metro Bundler abaixo que permite testarmos a aplicação. Lembre-se que sempre que trocar de máquina, deve-se atualizar este número para testar na máquina atual.

192.168.0.101:3333

Create Project

Isso é necessário pois o localhost pode não ser acessível na rede, então é necessário utilizar o IP. Em um terminal paralelo, navegue até a pasta do servidor e inicie-o com o comando yarn start. Depois teste com o Insomnia a conexão:

Create Project

A chamada da API na aplicação mobile é idêntica a da web.

Create Project

Create Project

Já nos componentes de filtro da página TeacherList, uma diferença é que invés de Onchange está se usando OnchangeText, mas isso porque, por razões de tempo, não foi implementado a caixa de seleção (ficando como um dos Desafios mais adiante).

Create Project

Para testar o botão de filtro é possível fazer a mesma estratégia de emitir um console.log no método relacionado:

Create Project

Create Project

Única coisa a se lembrar é de trocar o aparelho que estiver se testando, se for emulador ou aparelho físico.

Create Project

Feito isso o método é idêntico ao do projeto web:

Create Project

Create Project

WhatsApp – Deep Linking

No botão do WhatsApp vamos aplicar uma técnica conhecida como “Deep Linking” onde uma aplicação abre outra aplicação. Grande parte de aplicação mobile tem um endereço URL em que é possível acessar pelo módulo do React Native Linking:

import { View, Image, Text, Linking, AsyncStorage } from 'react-native'; 

Create Project

Favoritos – Armazenamento Interno

Para armazenamento interno no mobile precisamos instalar um DB pelo:

expo install @react-native-community/async-storage

Create Project

Temos que criar a propriedade no componente TeacherItem para sabermos quando foi favoritado e fazer as mudanças necessárias no Layout.

Create Project

Create Project

O favoriteArray.push adiciona o item no Array de favorito, o splice remove o conteúdo da lista. No botão dos favoritos há apenas um condicional trocando a imagem do botão favorito:

Create Project

Na página TeacherList precisamos de uma variável constante de estado, para acompanhar as mudança no controle salvando a id do professor.

const [favorites, setFavorites] = useState<number[]>([]);

Create Project