Xamarin Forms - Apresentando o framework FreshMVVM - I

 Neste artigo eu vou apresentar os conceitos básicos sobre o framework FreshMVVM.

Hoje veremos como executar a abordagem MVVM - Model-View-ViewModel - no Xamarin Forms usando o framework FreshMVVM.

O MVVM é a melhor abordagem para os aplicativos Xamarin.Forms e WPF. Há muitos plugins MVVM ou bibliotecas como FreshMVVM, MVVMCross, Prism, etc., disponíveis para simplificar as implementações do MVVM.

Se você não sabe o que é MVVM veja nas referências, links para artigos que mostram o conceito deste padrão.

O FreshMVVM foi projetado para executar o MVVM de maneira fácil e simples em aplicações Xamarin.Forms, e, foi criado por Michael Ridland sendo distribuido como um pacote Nuget.

Abaixo vemos uma figura que mostra como o FreshMVVM atua no Xamarin Forms:

Dentre os recursos oferecidos pelo FreshMVVM destacam-se :

O Framework utiliza uma convenção sobre configuração e possui certas regras para realizar a vinculação de dados MVVM.

A seguir as principais:

Além disso destacam-se os seguintes recursos do FreshMVVM:

1- Cada PageModel possui uma propriedade chamada "CoreMethods", que é preenchida automaticamente quando um PageModel é enviado, e possui também as funções básicas que a maioria dos aplicativos precisa, como exibir alerta, Pushing , Pop Model, etc.

2- O framework possui métodos de navegação para fazer a navegação entre as páginas.

Podemos usar o método PushPageModel para empurrar a página na pilha de navegação ou ir para a próxima página, em vez do PushAsync, no MVVM normal. Exemplo:

await CoreMethods.PushPageModel<AddContatoPageModel>();

Abaixo temos o código equivalente na navegação padrão normal:

Navigation.PushAsync (new AddContatoPage ());

Podemos usar PopPageModel para exibir a página da pilha de navegação em vez de PopAsync no MVVM normal.

await CoreMethods.PopPageModel();

Abaixo o código padrão equivalente:  

Navigation.PopAsync();

3- Possui o método DisplayAlert

await CoreMethods.DisplayAlert("Detalhes", "Atualiza Detalhes", "OK", "Cancel"); 

4- Inversão de Controle (IOC)

O FreshMvvm vem com um contêiner IOC integrado. Ele usa o TinyIOC por baixo dos panos, mas com nomes diferentes para evitar conflitos.

Por exemplo, para registrar a interface IContatoRepository com a classe ContatoRepository.

FreshIOC.Container.Register <IContatoRepository, ContatoRepository>();

5- Injeção de Construtor - PageModel

Quando os PageModels são enviadas via push, os serviços que estão no contêiner IOC podem ser enviados para o Construtor.

Por exemplo, no construtor AddContatoPageModel, se passarmos a interface IContatoRepository como parâmetro, essa interface assumirá a implementação da classe ContatoRepository que foi registrada pelo IOC.

public class AddContatoPageModel: FreshBasePageModel
{

    public IContatoRepository _contatoRepository;

    public BaseContactPageModel (IContatoRepository contatoRepository)
    {
          _contatoRepository = contatoRepository;
     }
}

Esses são alguns dos recursos oferecidos pelo framework FreshMVVM, e , nada melhor do que um exemplo prático para ver tudo isso funcionando.

Mas você pode estar pensando ...."Eu preciso mesmo de um framework para implementar o MVVM ? "

Claro que não, você pode implementar o padrão MVVM sozinho mas vai encontrar os seguintes problemas para resolver:

E você pode resolver tudo sozinho fazendo a sua própria implementação.

Mas porque não usar então uma ferramenta que já resolve tudo isso e te livra deste trabalho ?

Na próxima parte do artigo iremos criar um projeto Xamarin Forms usando os recursos do MVVM.

"Porque o Senhor é justo, e ama a justiça; o seu rosto olha para os retos."
Salmos 11:7

Veja os Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique e confira !

Quer migrar para o VB .NET ?

Quer aprender C# ??

Quer aprender os conceitos da Programação Orientada a objetos ?

Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ?

Referências:


José Carlos Macoratti