O projeto se trata de um aplicativo multiplataforma construĆdo a partir do Visual Studio. O sistema Ć© um aplicativo de Teste Drive onde Ć© possĆvel escolher um carro a partir de uma listagem, definir caracterĆsticas que alteram o preƧo final e agendar um horĆ”rio para utilizar o carro alugado. Utilizou-se as ferramentas do Xamarin para a construĆ§Ć£o do serviƧo e teve como base o curso "Xamarin parte 1: crie aplicativos mobile com Visual Studio" disponĆvel pela Alura.
- InstalaĆ§Ć£o de ambiente Xamarin para Visual Studio;
- CriaĆ§Ć£o de pĆ”ginas XAML em projeto com padrĆ£o MVVM (Model-View-ViewModel);
- UtilizaĆ§Ć£o de tags como StackLayout, Grid, ListView, Label, TableView, EntryCell, DatePicker e TimePicker;
- UtilizaĆ§Ć£o de propriedades como OnPropertyChanged e alteraĆ§Ć£o dinĆ¢mica de teclados para cada tipo de dados;
- ExibiĆ§Ć£o de mensagens por DisplayAlert();
- Conceito de Data Binding para tratamento no code behind;
O projeto agora respeita o padrĆ£o MVVM (Model View ViewModel) e para isso utilizou-se de comandos e troca de mensagens entre classes. A listagem agora Ć© realizada a partir de uma chamada para uma API REST que aguarda com um ActivityIndicator e a aplicaĆ§Ć£o sĆ³ permite a confirmaĆ§Ć£o dos agendamentos caso os campos sejam preenchidos corretamente.
- Ajuste da arquitetura: desacoplamento do code behind em camadas intermediƔrias de ViewModel;
- HeranƧa de classes para resgate de interfaces e mƩtodos como OnPropertyChanged;
- UtilizaĆ§Ć£o de MessagingCenter da mensageria do Xamarin Forms para evitar acoplamento;
- UtilizaĆ§Ć£o de aƧƵes realiazadas por Command e nĆ£o pelos eventos de Clicked;
- ConexĆ£o da lista de veĆculos a um servidor externo de Fipe atravĆ©s de um serviƧo HTTP GET;
- UtilizaĆ§Ć£o de novos conceitos como: ContentPage.BindingContext, SelectedItem, OnAppearing e OnDisappearing, Subscribe e Unsubscribe, MessagingCenter, Command e ICommand, HTTP GET e StringAsync, DisplayAlert com 2 condiƧƵes, ChangeCanExecute(), ActivityIndicator, etc.
Entre as atualizaƧƵes no projeto estĆ£o: tela de login com todas as propriedades e excessƵes da interface e um menu lateral com as informaƧƵes do perfil e abas de ediĆ§Ć£o. AlĆ©m da estilizaĆ§Ć£o do projeto.
- ImplementaĆ§Ć£o da tela de login com imagem e campos de texto com definiƧƵes corretas para teclado e excessƵes.
- ImplementaĆ§Ć£o de um menu lateral FlyoutPage com abas por TabbedPage mostrando os dados do usuĆ”rio que fez login e permitindo editar por dois botƵes.
- Habilitar e desabilitar campos por meio de Conversor
- UtilizaĆ§Ć£o de conceitos como: Converter e IValueConverter, navegaĆ§Ć£o entre abas por CurrentPage(), tratamento de excessƵes por DisplayAlert, etc.
Ente as atualizaƧƵes no projeto estĆ£o: acesso a cĆ¢mera nativa do dispositivo para registrar foto de perfil, utilizaĆ§Ć£o do banco de dados local para criaĆ§Ć£o de banco relacional contendo todos os agendamentos registrados, implementaĆ§Ć£o de pĆ”gina de visualizaĆ§Ć£o de agendamentos.
- UtilizaĆ§Ć£o dos conceitos de Intent e Activity para acessar a cĆ¢mera nativa do aparelho;
- ConversĆ£o de formatos para a aplicaĆ§Ć£o reconhecer a imagem;
- CriaĆ§Ć£o e visualizaĆ§Ć£o de banco de dados relacionais utilizando SQLite, ADB (Android Debug Bridge) e DB Browser;
- Leitura de dados para projeĆ§Ć£o em pĆ”gina com lista de dados;
- Conversor de cor sobre propriedades de dados.
- Adicionando permissƵes no AndroidManifest e foto de aplicativo;
- Alguns conceitos aprendidos: interfaces entre projetos (com DependencyService, [assembly: Xamarin.Forms.Dependency(typeof(MainActivity))]), PCL (Portable Class Library), utilizaĆ§Ć£o de DAO para manutenĆ§Ć£o de dados e entidades do banco;