10Things nawigacja – implementacja w mobile

10Things nawigacja

A więc mamy kolejny tydzień konkursu, plan jaki sobie założyłem to implementacja nawigacji w 10Things. Jako, że aplikacja będzie korzystać z FreshMVVM dlatego też zacząłem zgłębiać tajniki nawigacji tego framework-a.

FreshMVVM daje nam 3 możliwe opcje nawigacji z pudełka „Basic navigation”, „Tabbed navigation” i „Master Detail navigation”.

Postaram się pokrótce przedstawić każdą z opcji, oraz jak ich użyć w aplikacji.

Jak zaimplementować – basic navigation

Jest to najprostsza i najczęściej spotykana forma nawigacji page-by-page. Zasada jej działania jest oparta na stosie FIFO. W implementacji jest ona bardzo prosta wystarczy zainicjować instancję FreshNavigationContainer.

Przykład

var page = FeshPageModelResolver.ResolvePageModel<MainViewPageModel>();
var navContaincer = new FreshNavigationContainer(page);
MainPage = navContainer;

Jak zaimplementować – master detail navigation

Jest to rodzaj nawigacji często spotykany w postaci szerokiej maści menu i nawigacjach typu rodzic dziecko. Pod maską do obsługi używa Dictionary<string, Page> do przechowania instancji PageModels.

Przykład

var navContainer = new FreshMasterDetailNavigationContainer();
navContainer.Init("Menu");
navContainer.AddPage&lt;MainViewPageModel&gt;("Ideas", null);
navContainer.AddPage&lt;SettingsViewPageModel&gt;("Settings", null);
MainPage = navContainer;

Jak zaimplementować – tabbed navigation

Tabbed navigation jest kolejnym często spotykanym rodzajem nawigacji w aplikacjach mobilnych. W Android jest to pasek zakładek wyświetlany na górze, natomiast w iOS pojawia się on na dole. Implementacja i użycie jest bardzo proste wystarczy utworzyć instancję FreshTabbedNavigationContainer.

Przykład

var navContainer = new FreshTabbedNavigationContainer();
navContainer.AddTab&lt;MainViewPageModel&gt;("Ideas", null);
navContainer.AddTab&lt;SettingsViewPageModel&gt;("Settings", null);
MainPage = navContainer;

Co dalej?

FreshMVVM daje nam dostęp do prostego API dzięki, któremu można w łatwy sposób zaimplementować niestandardową nawigację dziedzicząc po interfejsie IFreshNavigationService.

Przykład

public class CustomNavigationContainer : Xamarin.Forms.MasterDetailPage, IFreshNavigationService
{
....
}

var navContainer = new CustomNavigationContainer();
navContainer.AddPage&lt;MainViewPageModel&gt;("Ideas");
navContainer.AddPage&lt;SettingsViewPageModel&gt;("Settings");
MainPage = navContainer;

Podsumowanie

Jak widzicie implementacja nawigacji nie musi być wcale taka trudna bo można to zrobić lekko łatwo i przyjemnie. Niekoniecznie w takiej kolejności. Na chwilę obecną FreshMVVM wysunął się mocno na prowadzenie względem innych framework MVVM.

Ma on wiele zalet, a przede wszystkim jest bardzo lekki ok. 60kb.

Czy wy macie jakieś swoje ulubione framework MVVM? Jaka funkcjonalność jest dla was najfajniejsza?

Share