Este projeto é um aplicativo Flutter que permite ao usuário baixar, visualizar e favoritar livros de uma biblioteca online. O aplicativo foi construído em Flutter, utilizando os packages:
- GetX: para gerenciamento de estado;
- Dio: para solicitações HTTP;
- Path_provider: para localizar sistema de arquivos;
- Vocsy_epub_viewer: para visualizar arquivos EPUB;
- Shared_preferences: para persistência de dados;
- Shimmer: para Lazy Loadig.
Prototipação: Acesse o Figma
Especificação de Requisitos: Acesse a ERS
Instalação: Baixe o APK
O projeto é estruturado em várias partes principais:
-
HomePage: Página inicial do aplicativo. Contém uma
TabBar
com duas abas: 'Biblioteca' e 'Favoritos'. A página inicial também faz a primeira chamada para a API para obter os livros. -
LibraryTab: Primeira aba da página inicial, que mostra todos os livros disponíveis na biblioteca em um
GridView
, em que cadaa livro é representado por umCardBook
. -
FavoriteTab: Segunda aba da página inicial, que mostra todos os livros que foram marcados como favoritos pelo usuário.
-
CardBook: Este widget representa um livro na interface do usuário, exibindo a sua capa, o título e autor.
-
BooksRepository: Esta classe é responsável por fazer chamadas à API para obter os livros, e mantém uma lista dos livros que foram obtidos.
-
Book: Esta classe representa o model de um livro, contendo informações como o título, autor, URL da capa e URL de download. Além disso, também contém métodos para salvar e carregar os estados de baixado ou favorito.
-
BookController: Esta classe é responsável por gerenciar o estado de um livro. Ela contém métodos para baixar, deletar e alternar se o livro é favorito.
Para executar este algoritmo, será necessário possuir o Flutter instalado em seu sistema. Com o Flutter instalado, você pode executar o app seguindo estas etapas:
- Clone este repositório para o seu sistema local.
- Abra um terminal e navegue até o diretório "desafio_2" do repositório clonado.
- Execute o seguinte comando para executar o algoritmo:
flutter run
- Aguarde que seja feita a construção do app no seu simulador.