Esta aplicação móvel, desenvolvida em React Native, implementa um sistema de navegação com autenticação de usuário (login e cadastro) e navegação entre diferentes telas de filmes. Utiliza diversas bibliotecas como react-navigation, react-native-elements, react-native-paper, AsyncStorage e componentes de UI do react-native.
O projeto está dividido em várias classes e componentes que representam diferentes telas e funcionalidades da aplicação:
- Principal: Tela de login.
- Cadastro: Tela de cadastro de novos usuários.
- Nav2: Componente de navegação que gerencia as rotas internas após o login.
- Categorias: Tela que permite ao usuário filtrar filmes com base em critérios como quem está assistindo, humor e gênero do filme.
- Filme1 a Filme5: Telas que exibem detalhes de filmes específicos.
- Estados:
emailesenha. - Métodos:
handleLogin: Verifica se as credenciais estão corretas comparando com dados armazenados noAsyncStorage. Navega para a tela de categorias se bem-sucedido, ou exibe mensagens de erro caso contrário.
- Layout: Campos de entrada para email e senha, botões de login e navegação para cadastro.
- Estados:
emailesenha. - Métodos:
handleRegister: Armazena as credenciais noAsyncStoragee navega de volta para a tela de login após um cadastro bem-sucedido.
- Layout: Campos de entrada para email e senha, botão de cadastro.
- Estados:
selectedOption,selectedGenreeselectedMood. - Métodos:
handleCheckBoxPress,handleGenreCheckBoxPress,handleMoodCheckBoxPress: Atualizam os estados com base nas opções selecionadas pelo usuário.handleFilter: Navega para a tela de filme correspondente ao gênero selecionado.
- Layout: CheckBoxes para selecionar quem está assistindo, humor e gênero do filme. Botão para aplicar o filtro e navegar para a tela correspondente.
- Layout: Exibem detalhes do filme, incluindo título, imagem e descrição.
- React Navigation: Utiliza
createBottomTabNavigatorpara criar uma navegação de tabulação entre login e cadastro, ecreateStackNavigatorpara gerenciar as telas internas após o login. - Navegação Condicional: A navegação é condicionada ao estado de autenticação do usuário (login bem-sucedido navega para categorias, cadastro bem-sucedido navega para login).
- AsyncStorage: Utilizado para armazenar e recuperar as credenciais dos usuários localmente.
- react-native-elements: Utilizado para CheckBoxes.
- react-native-paper: Utilizado para Card e Paragraph.
- MaterialCommunityIcons: Utilizado para ícones na barra de navegação.
- StyleSheet: Definido para estilizar os componentes, garantindo uma aparência consistente e agradável.
- Alertas e Vibração: Fornece feedback ao usuário em eventos como login/cadastro bem-sucedido ou falhas, utilizando
alerteVibration.
O código implementa uma aplicação móvel básica mas funcional, com autenticação de usuário, navegação entre telas e filtragem de conteúdo baseada em preferências do usuário. O uso de AsyncStorage permite uma experiência de usuário persistente e o uso de bibliotecas de componentes de UI e navegação facilita o desenvolvimento e a manutenção do aplicativo.
