Dot.Blog

C#, XAML, WinUI, WPF, Android, MAUI, IoT, IA, ChatGPT, Prompt Engineering

FreshMvvm.Maui

FreshMvvm est un toolkit MVVM assez connu et utilisé sous Xamarin.Forms. Il a été porté sous MAUI qu’apporte-t-il ?

MVVM

Je ne vous ferai pas l’affront de vous dire ce qu’est MVVM ni à quoi cela sert ni quelques sont les toolkits les plus utilisés, si vous lisez Dot.Blog vous le savez déjà, et sinon tapez « mvvm » dans le champ de recherche à droite sur le blog et vous aurez de quoi lire pour tout le printemps !

Donc FreshMvvm est un autre toolkit pour supporter le pattern MVVM plus facilement dans vos applications. 

FreshMvvm.Maui

Cette version MAUI est un portage avec pas mal de réécritures de la version Xamarin.Forms avec l’avantage d’avoir très peu d’impact sur l’API. On peut ainsi migrer une App Xamarin.Forms utilisant déjà FreshMvvm vers MAUI en ayant presque pas à se soucier de la partie MVVM puisqu’elle reprend une API similaire.



Alors, qu'est-ce qui a changé ?

FreshMvvm.Maui est toujours le FreshMvvm qui a eu un certain succès sous Xamarin.Forms. En règle générale, le processus de mise à niveau sera fluide et facile car, du point de vue du consommateur de l’API, peu de choses ont changé. Des modifications internes ont été apportées, la plus importante étant la prise en charge de l'infrastructure d'injection de dépendances .NET, mais c’est bien la seule chose qui diffère vraiment. En contrepartie cela signifie que TinyIOC a été supprimé et par défaut, c’est l'injection de dépendance par défaut de Microsoft qui est utilisée, et encore que ce changement est transparent si on se base sur une utilisation simple de FreshMvvm. Le plus grand avantage de ce changement est que vous pouvez utiliser n'importe quel conteneur de DI prenant en charge l'injection de dépendance Microsoft. Plus de souplesse pour les utilisateurs pointilleux donc !

Comment démarrer un projet avec FreshMvvm

Une fois le projet MAUI créé sous Visual Studio (ou par ligne de commande) et une fois le projet ouvert il faut ajouter le paquet FreshMvvm.Maui.

Ensuite ajouter vos pages, vos services, vos ViewModels…

En général on configure aussi un conteneur de navigation, le plus simple étant programmé de cette façon : 

//App.xaml.cs
public partial class App : Application
{  public App() 
 {
  InitializeComponent();
  var page = FreshPageModelResolver.ResolvePageModel<QuoteListPageModel>();
  var basicNavContainer = new FreshNavigationContainer(page);
  MainPage = basicNavContainer;
 }
}

La dernière étape consiste à configurer le builder de application en ajoutant notamment les services au moteur de DI.

Ce n’est pas plus compliqué que cela pour démarrer.

Ensuite il faut bien entendu tirer parti des avantages du toolkit, et pour cela il faut regarder sa documentation (notamment la page GitHub de la version Xamarin.Forms https://github.com/rid00z/FreshMvvm) et jouer un peu avec la démonstration spéciale pour MAUI (https://github.com/rid00z/HelloFreshMauiPreview/). On peut aussi regarder le code source c’est toujours instructif ! (ici : https://github.com/rid00z/FreshMvvm).

Conclusion

FreshMvvm a ses partisans, c’est un toolkit intéressant et bien fait. Je ne suis pas trop pour s’écarter des standards et des routes bien balisées car au moment des migrations les dépendances à du code tiers plus maintenu peut représenter des coûts colossaux. C’est pour cela que j’ai toujours conseillé Prism sous WPF puis Mvvm.Light qui a suivi toutes les évolutions de Windows Phone, de WinRT, de Xamarin.Forms et UWP. Et même lorsqu’il s’est arrêté, son concepteur a aidé à donner naissance au Community Toolkit Mvvm. Ici la chance sourit à ceux qui ont utilisé FreshMvvm sous Xamarin.Forms et qui doivent porter leur code sous MAUI. Une version MAUI de la bibliothèque existe et cela leur facilitera grandement le travail de migration.

En dehors d’une telle migration y-a-t-il un intérêt à utiliser FreshMvvm plutôt que le CT Toolkit MVVM ? Je ne vois aucune raison technique qui ferait pencher la balance en ce sens. Maintenant on peut se sentir plus ou moins en résonnance avec un Toolkit et FreshMvvm n’est pas un mauvais toolkit. A vous de voir donc, même si mon conseil est d’utiliser le CT Toolkit.

Stay Tuned !


blog comments powered by Disqus