L'essentiel à savoir pour comprendre Flutter, le framework cross-platform de Google.
Flutter ne cesse de gagner en popularité depuis la sortie de sa première version stable en décembre.
Après un peu plus d’un semestre de prise en main et de mise à l’essai, nous pouvons enfin, avec confiance, vous expliquer et synthétiser ce qui fait de ce framework un candidat sérieux pour le développement de votre prochain projet.
Qu'est-ce que Flutter ?
Flutter est un framework de développement mis au point par Google, qui a pour ambition de permettre de réaliser des applications mobile, web, et desktop avec un code source unique. Il est en compétition directe avec les autres outils cross-platform tels que ReactNative, Xamarin, Ionic...
Pour le moment Google priorise principalement le développement mobile sur Android et iOS. La prise en charge de la compatibilité web est en cours de développement et arrivera dans un second temps.
Nous allons nous intéresser ici à l’utilisation de Flutter dans le cadre de la production d’une application mobile à destination d’Android et iOS.
Forces du framework
Un code source unique déployable sur le PlayStore et l'AppStore
En tant que framework cross-platform, le principal avantage de Flutter par rapport au développement natif est de pouvoir exploiter un code source commun applicable sur plusieurs systèmes.
Une productivité améliorée pour les développeurs
La technologie et le langage de programmation utilisés par Flutter lui permettent de se doter d'une fonctionnalité cruciale pour les développeurs appelée hot reload. Cette dernière permet de redéployer et tester une modification du code source instantanément. Cette technique permet d’itérer très rapidement sur l’implémentation d’un écran et d’éviter les temps de compilation.
Grace à Flutter, le changement de largeur d'une cellule produit peut être déployé et testé instantanément et cela peu importe la taille du projet. Le même travail lors d'un développement natif sur Android ou iOS peut prendre de 20 secondes à plusieurs minutes en fonction de la complexité de l’application. Le temps ainsi économisé pourra être utilisé à meilleur escient sur des parties plus critiques du projet grâce à une expérimentation plus facile.
Des interfaces optimisées, 100% personnalisables
Contrairement à ReactNative, Flutter n'utilise aucun composant natif fourni par Android et iOS; il reproduit les éléments visuels et leurs comportements à l’identique, apportant une flexibilité de modification sans égal. Son puissant moteur de rendu est capable de produire des animations fluides et stables à 60 images par secondes sans aucun travail spécifique des développeurs.
Aucun autre framework cross-platform sur le marché n’a un rendu graphique de meilleure qualité. Ce dernier rivalise même avec les performances d’une application native qui peut parfois demander beaucoup de travail d’optimisation.
Des coûts de développement et d'exploitation grandement divisés
Avantage principal du cross-platform : le fait de n'avoir qu'un seul code source à développer, tester et maintenir permet de réduire les coûts de développement.
Le développement d'un projet Flutter pour Android et iOS devrait être en fonction des cas de 30 à 50% moins cher que la création de deux applications natives.
Les coûts liés à la QA peuvent théoriquement être divisés par 2. Même si les applications restent à tester sur chaque OS, le risque de ne pas avoir un fonctionnement identique entre les deux plateformes sera quasi nul du fait de la mise en commun des logiques métier et visuelle.
Les coûts liés à la TMA et aux corrections de crashs sont eux effectivement divisés par 2.
Une application Flutter sera donc globalement de 35 à 50% moins cher que la même application développée nativement. Le temps de développement et le nombre de développeurs à faire travailler sur le projet sera aussi réduit.
Une popularité grandissante
Flutter est au coude à coude avec ReactNative en terme de popularité sur GitHub (plateforme sociale de développement). Les développeurs s'y intéressent de plus en plus et les retours de la communauté sont très positifs.
Limites et inconvénients du framework
Un support limité de la part des sdks externes
Encore peu de solutions PAAS fournissent un SDK permettant d'intégrer leurs services facilement dans une application développée avec Flutter.
Cela ne rend pas l'intégration impossible mais il faudra alors passer par l'écriture d'un plugin d'intégration par plateforme pour chacun de ces services. Ce plugin peut déjà avoir été écrit par une personne de la communauté et rendu open-source, facilitant son intégration. Si ce n'est pas le cas, il faudra alors éditer ce plugin pour chacun des services intégrés non compatible directement avec Flutter. Cela implique de développer le code du plugin pour chacune des plateformes.
Grace à sa popularité, de plus en plus de services fournissent déjà des intégrations pour Flutter. Avec le temps, ceux qui manquent à l’appel seront certainement créés et maintenus par la communauté, réduisant le besoin d’écrire ces dernières spécifiquement pour votre projet.
Peu adapté pour le développement de fonctionnalités avancées
Comme tous framework cross-platform, Flutter reste peu adapté à la mise en place de fonctionnalités complexes. Les applications qui nécessitent d'interagir prioritairement avec l'ensemble des capteurs et technologies des smartphones seront plus difficiles à développer.
Mieux vaut donc ne pas chercher à utiliser intensivement les fonctionnalités avancées de caméra, de bluetooth, d'audio, de gestion de fichiers, d'accessoire externe, d'objet connecté etc...
Flutter : pour quel type d'application ?
Flutter se révèle une option plus que sérieuse pour les types d'applications suivants :
- marketplace (Veepee, Vinted, LeBonCoin)
- m-commerce (FNAC, Pimkie)
- news (LeMonde, Figaro, 20 minutes)
- dashboard (application interne d'analytics)
Chez mobiten, nous avons toujours été fervents défenseurs du développement natif. Aucun framework cross-platform n'avait réussi à nous séduire jusqu'à ce jour. Après plusieurs mois de tests et de prise en main, Flutter s'est imposé pour nous comme une solution tout à fait viable pour le développement des types d'applications énumérés précédemment.
Nous avons ajouté Flutter à la liste des services que nous proposons. Nous publierons prochainement des articles plus avancés sur ce sujet.