Chez Liip, nous développons des applications mobiles depuis plusieurs années. Nous avons utilisé différentes technologies telles que Kotlin (Android), Swift (iOS), Cordova, Xamarin et maintenant Flutter. Chacune ayant ses avantages et désavantages, nous nous efforçons de nous maintenir à jour et d'utiliser les technologies les plus adaptées à chaque projet.
Flutter est un framework de dĂ©veloppement multi-plateforme pour rĂ©aliser des applications sous Android, iOS, Web, etc. avec le langage Dart. Il a Ă©tĂ© publiĂ© en 2017 et a Ă©tĂ© dĂ©veloppĂ© par Google. Comme sa popularitĂ© est trĂšs grande dans la communautĂ©, il Ă©tait temps de lâutiliser pour lâun de nos clients aprĂšs plusieurs projets de recherche en interne. Kariyon, notre premiĂšre application dĂ©veloppĂ©e avec Flutter est dĂ©sormais sur les stores (AppStore / Google Play).
Kariyon a Ă©tĂ© imaginĂ© par la sociĂ©tĂ© Local Impact. Cette Start-up fribourgeoise s'est particuliĂšrement distinguĂ©e durant la crise de la Covid-19 afin d'aider les commerces locaux en proposant des bons dâachats en partenariat avec le canton de Fribourg. L'application souhaite continuer Ă soutenir les dĂ©taillants locaux en leur fournissant l'infrastructure nĂ©cessaire pour un systĂšme de fidĂ©litĂ© numĂ©rique. De plus, si le commerce appartient Ă une communautĂ© de commerces, les points sâaccumulent aussi auprĂšs de cette communautĂ©, bĂ©nĂ©ficiant ainsi dâavantages supplĂ©mentaires.
"Kariyon", une application pour smartphone, est lancée pour soutenir le commerce de proximité fribourgeois avec une carte de fidélité virtuelle et globale - RTS, 11.18.2021
Dans cet article, nous aimerions vous partager notre retour dâexpĂ©rience sur Flutter.
Design et animation
Avec une approche déclarative, Flutter met tout en Ćuvre pour faciliter le dĂ©veloppement des vues et leur optimisation. Peu dâefforts sont nĂ©cessaires pour avoir trĂšs vite un beau retour visuel. Les widgets mis Ă disposition permettent de crĂ©er des visuels identiques pour les deux plateformes (Android et iOS). Si besoin, il est aussi possible dâutiliser des composants graphiques spĂ©cifiques Ă la plateforme.
Les bulles
du background en blanc sur l'image 1 et en vert sur l'image 2 sont réalisées en utilisant un CustomPainter
. Il permet de personnaliser le design de l'application en dessinant des formes géométriques quelconques. L'application a la possibilité de s'enrichir facilement d'un design profond et détaillé.
Un autre objet, le CustomClipper
permet de découper cette fois les formes et de limiter leurs étendues afin de voir l'arriÚre-plan. Visibles sur l'image 2, les coupons ont des arrondis vers l'intérieur. Avec Flutter, les possibilités de personnalisation du design sont grandes et rapides à mettre en place.
Les animations sont aussi bien pensées avec Flutter. Comme pour les autres frameworks, il est possible d'ajouter directement des GIFs dans l'application. Il est aussi trÚs facile de créer des animations en ajoutant une évolution dans le temps aux CustomPainter
et CustomClipper
.
Navigation
Flutter se veut cross-plateforme pour Android et iOS, mais peut aussi ĂȘtre utilisĂ© pour des applications web (depuis la v2.0) et desktop (en beta). Câest trĂšs pratique pour avoir une seule codebase mais le support des diffĂ©rentes plateformes complexifie le code.
Il existe deux systÚmes de navigation: le Navigator (systÚme impératif) et le Router (systÚme déclaratif). Si l'application est petite, le Navigator
est suffisant et la navigation est simple et efficace pour les applications mobiles. DĂšs que la navigation est plus complexe, le Router
peut devenir nécessaire, mais cela demande plus de travail et est plus lourd à entretenir.
Packages
Avec Flutter, beaucoup de fonctionnalitĂ©s sont sous la forme de packages (librairies). Les fonctionnalitĂ©s du systĂšme telles que lâutilisation de la camĂ©ra, le GPS ou encore les requĂȘtes rĂ©seau nĂ©cessitent l'ajout d'un package. Pour ces fonctionnalitĂ©s de base par exemple, les packages sont maintenus par Google. Mais pour d'autres, le soutien de la communautĂ© est nĂ©cessaire.
A cause de ses packages, le support et la longĂ©vitĂ© de l'application nâest pas garanti. Cependant, la communautĂ© de Flutter est dĂ©jĂ grande et en pleine expansion. Les packages les plus populaires sont bien maintenus Ă jour. Câest aussi une opportunitĂ© pour les dĂ©veloppeurs de contribuer Ă des projets open source pour garantir la longĂ©vitĂ© de la plateforme.
Dart & Hot reload/hot restart
Dart est un langage facile à apprendre, à typage fort et orienté-objet avec une syntaxe de type C et offre toutes les fonctionnalités d'un langage moderne comme l'inférence de type, sécurité nulle, génériques, concurrence, etc. Le choix de ce langage a permis de mettre à disposition le Hot reload
et Hot restart
durant le développement grùce la compilation Just-in-time
. Quand on change du code, le changement est directement visible dans l'application sans avoir Ă la redĂ©marrer. Cette fonctionnalitĂ© permet un gain de temps considĂ©rable, mĂȘme si cela ralentit les performances de l'application lors du dĂ©veloppement uniquement.
Ă l'inverse, lors de la mise en production, l'application utilise la compilation Ahead of time
rendant possible les bonnes performances de Flutter.
Conclusion
Si votre application est petite et que vous dĂ©sirez minimiser les coĂ»ts de dĂ©veloppement, Flutter est la meilleure solution actuellement sur le marchĂ© tout en donnant un rĂ©sultat trĂšs qualitatif qui est proche du natif, tant en termes dâexpĂ©rience utilisateur que de performances.
Flutter permet aussi de maĂźtriser une seule technologie avec une codebase unifiĂ©e ce qui peut-ĂȘtre un grand avantage en comparaison de lâapproche classique qui consiste Ă dĂ©velopper deux fois la mĂȘme application pour Android et iOS.
En revanche, nous ne sommes pas sĂ»rs si Flutter se prĂȘte bien au dĂ©veloppement d'applications complexes et s'il y aura plus de problĂšmes de maintenance comparĂ© au natif. Si vous voulez le meilleur produit possible et que vous pouvez vous permettre des coĂ»ts supplĂ©mentaires, pensez Ă long terme: le dĂ©veloppement natif reste le meilleur choix.