DEV Community

Alexandre Freire
Alexandre Freire

Posted on • Updated on

FreshMvvm para Xamarin.Forms

O FreshMvvm é um Framework Mvvm super leve projetado especificamente para o Xamarin.Forms. Ele foi projetado para ser fácil, simples e flexível.

Como ele se compara a outras opções?

  • É super leve e super simples
  • Ele foi projetado especificamente para o Xamarin.
  • Projetado para ser fácil de aprender e desenvolver (ótimo quando você não está pronto para o RxUI)

Recursos

  • Navegação PageModel para PageModel
  • Ligação automática do BindingContext
  • Ligação automática de eventos da página (por exemplo, appearing)
  • Métodos básicos (com valores) no PageModel (init, reverseinit)
  • Construído em contêiner COI
  • Injeção de Construtor PageModel
  • Métodos básicos disponíveis no Model, como Alert
  • Tipos de navegação incorporados para SimpleNavigation, Tabbed e MasterDetail

Navegação

A forma Primária de Navegação no FreshMvvm é PageModel para PageModel, essencialmente significa que nossas visualizações não têm idéia da Navegação.

Por exemplo, para navegar entre os modelos de página, use:

await CoreMethods.PushPageModel<QuotePageModel>(); // Pushes navigation stack
await CoreMethods.PushPageModel<QuotePageModel>(null, true); // Pushes a Modal
await CoreMethods.PushPageModel<QuotePageModel> (pm => pm.Quote = "Quote 23") // Pushes Navigation Stack and initializes the property 'Quote' with  value 'Quote 23'
Enter fullscreen mode Exit fullscreen mode

O mecanismo de navegação no FreshMvvm é feito através de uma interface simples, com métodos para Push e Pop. Essencialmente, esses métodos podem controlar a navegação do aplicativo da maneira que desejar.

public interface IFreshNavigationService
{
    Task PushPage(Page page, FreshBasePageModel model, bool modal = false);
    Task PopPage(bool modal = false);
}
Enter fullscreen mode Exit fullscreen mode

No PushPage e no PopPage, você pode fazer qualquer tipo de navegação que desejar, desde uma simples navegação até uma avançada navegação aninhada.

O Framework contém alguns contêineres de Navegação incorporados para os diferentes tipos de Navegação.

Navegação Básica - Integrada

var page = FreshPageModelResolver.ResolvePageModel<MainMenuPageModel> ();
var basicNavContainer = new FreshNavigationContainer (page);
MainPage = basicNavContainer;
Enter fullscreen mode Exit fullscreen mode

Mestre Detalhe - incorporado

var masterDetailNav = new FreshMasterDetailNavigationContainer ();
masterDetailNav.Init ("Menu");
masterDetailNav.AddPage<ContactListPageModel> ("Contacts", null);
masterDetailNav.AddPage<QuoteListPageModel> ("Pages", null);
MainPage = masterDetailNav;
Enter fullscreen mode Exit fullscreen mode

Navegação com guias - incorporado

var tabbedNavigation = new FreshTabbedNavigationContainer ();
tabbedNavigation.AddTab<ContactListPageModel> ("Contacts", null);
tabbedNavigation.AddTab<QuoteListPageModel> ("Pages", null);
MainPage = tabbedNavigation;
Enter fullscreen mode Exit fullscreen mode

Utilizo bastante em meus projetos, por isso resolvi compartilhar aqui, para conhecer mais você pode acessar o repositório no GitHub https://github.com/rid00z/FreshMvvm lá tem mais informações de como implementar em seu projeto, garanto que isso deixa seu projeto Xamarin bem mais simples e limpo.

Vou deixar aqui um exemplo já implementado utilizando SideMenu:
Alt Text
https://github.com/alexandrefreiref/Af.Xamarin.Forms-SideMenu-FreshMvvm

Top comments (0)