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).

Bienvenue à Kariyon

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.

Animation d'ajout de points au coupon

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.