Avez-vous entendu parler de Flutter ? Grâce à tous ces discours lors du Google IO, un ensemble d’outils impressionnants soutenu par Google lui-même, à l’amour des développeurs et aux discussions sur les forums, Flutter est de plus en plus populaire dans la communauté des startups et des entreprises. Cependant, Flutter est encore assez récent, et beaucoup de gens se demandent s’il est suffisamment mature pour être utilisé dans quelque chose de plus qu’un prototype.
Dans cet article, nous allons tenter d’expliquer pourquoi Flutter est si bon dans ce qu’il fait, et dans quelle situation de projet est-il adapté.
Comme tout framework, il a ses points forts, mais aussi plusieurs points faibles. Cet article vous fournira toutes les connaissances nécessaires pour décider en toute connaissance de cause si Flutter est le bon choix pour votre prochain projet.
Mais tout d’abord, parlons du développement d’applications multiplateformes en général.
Qu’est-ce que le multiplateforme et pourquoi est-il de plus en plus populaire ?
Le terme « multiplateforme » désigne un framework qui vous permet d’utiliser une base de code unique pour déployer une application sur plusieurs plateformes, telles que le Web, iOS ou Android. Voici une liste des plus populaires :
- Flutter (soutenu par Google)
- React Native (soutenu par Facebook)
- Xamarin (soutenu par Microsoft)
- Ionic
Bien qu’ils aient tous leurs propres forces et faiblesses, nous parlons aujourd’hui de Flutter. En effet, contrairement aux autres frameworks, Flutter prend en charge toutes les plateformes suivantes :
- Web
- iOS
- Android
- Bureau (macOS, Windows, Linux)
Le principal avantage de Flutter
La possibilité de cibler autant de plates-formes à la fois, tout en ayant à consacrer beaucoup moins de temps pour les faire fonctionner et ressembler à des applications natives est un énorme avantage à avoir sur vos concurrents. Et nous insistons sur le mot « moins », car cibler 6 plateformes avec une seule base de code ne signifie pas que vous devrez faire 6 fois moins de travail plutôt que de les cibler individuellement.
En effet, lorsque vous utilisez une technologie multiplateforme, vous devez toujours préparer des flux d’interface utilisateur distincts pour les différentes plateformes et connecter votre code aux fonctions natives (comme l’appareil photo), qui sont mises en œuvre différemment sur chaque plateforme.
Une bonne analogie serait de créer un modèle de base de voiture, puis d’en sortir des versions légèrement modifiées : une berline, un coupé, un hayon, etc. Chaque version est quelque peu différente, mais toutes offrent la même esthétique visuelle et fonctionnelle et partagent de nombreux composants.
C’est beaucoup plus rapide que de créer des modèles complètement différents avec des pièces différentes pour chaque format.
Comme les formats de voiture, chaque plateforme a ses propres particularités qui doivent être traitées individuellement et qui peuvent affecter le code de base. C’est pourquoi les développeurs multiplateformes doivent également connaître la plateforme qu’ils ciblent et savoir comment communiquer avec elle en utilisant son code natif.
Simplifier le code multiplateforme
Un autre point fort de Flutter réside dans ses canaux de plate-forme natifs. Il s’agit d’une interface qui permet à vos développeurs de communiquer de manière transparente avec le code natif de l’appareil, et de mettre en œuvre des fonctionnalités plus complexes.
Certaines fonctionnalités, comme la prise de photos à l’aide de l’appareil photo, ne peuvent pas être implémentées uniquement dans Flutter, car elles nécessitent plus qu’un simple rendu à l’écran ou une connexion via Internet. Nous devons parler au matériel en utilisant le langage de son système d’exploitation. Et c’est exactement là que Flutter brille le plus – avec ses canaux de plate-forme.
Les canaux de plate-forme de Flutter
Les canaux de plate-forme sont un moyen de communiquer avec le système sous-jacent pour déclencher certaines actions spécifiques et obtenir un résultat en retour.
Grâce à cette abstraction, votre code Flutter verra toutes les implémentations des fonctions de la caméra sur les différentes plateformes comme une seule interface.
En d’autres termes, lorsque votre code Flutter appelle une méthode pour prendre une photo, il ne se soucie pas de la plateforme que vous utilisez, puisque cette partie est gérée par les canaux de la plateforme, qui « canalisent » votre appel de méthode vers la bonne implémentation native. Cela simplifie grandement votre code et le rend plus facile à maintenir à l’avenir.
D’autres frameworks (comme React Native) ont également une façon de traiter ce problème, mais la solution de Flutter est bien plus facile à travailler et à maintenir sur le long terme.
Il n’est pas nécessaire de réinventer la roue : Du code natif dans les bibliothèques
Comme la plupart des frameworks, Flutter utilise un gestionnaire de package, qui permet aux développeurs de gérer facilement les bibliothèques de leurs projets. Il est également capable de reconnaître le code natif dans ces bibliothèques, ce qui permet de prendre en charge tous les types de plateformes qu’il souhaite.
La plupart des bibliothèques sont écrites en Dart pur, de sorte que vous n’avez pas à vous soucier de la compatibilité des plateformes, et celles qui contiennent du code natif fournissent généralement une liste des plateformes qu’elles prennent en charge.
Vous vous dites peut-être : que se passe-t-il si une bibliothèque ne prend pas en charge la plate-forme que je vise ? Eh bien, c’est une situation très rare, et cela se produit généralement lors de l’utilisation de bibliothèques qui ciblent certaines fonctions très spécifiques du périphérique, comme l’accélération ML, les fonctions du système d’exploitation, les liaisons 3D, etc.
Si vous vous trouvez dans une situation où vous savez que votre plateforme cible supporte une certaine fonction mais que la bibliothèque ne l’implémente pas, alors votre équipe de développement peut toujours bifurquer le dépôt et l’implémenter elle-même. Il ne s’agit pas d’une solution optimale, mais d’une solution possible.
De nombreuses fonctions natives courantes sont déjà couvertes par les bibliothèques communautaires, ce qui signifie que vous serez en mesure de mettre votre application en service en un rien de temps. Voici une liste d’exemples de bibliothèques qui incluent du code natif et disposent d’un très bon support et d’une bonne documentation :
Une base de code unique
Maintenant que nous avons éliminé l’aspect technique, nous pouvons commencer à comprendre la situation dans son ensemble. Flutter permet essentiellement à votre équipe de définir l’interface utilisateur et la logique de l’application en un seul endroit, sans avoir à dupliquer le code. Tous les écarts résultant des différences de plateforme, comme la façon dont les fonctionnalités matérielles sont mises en œuvre, sont abstraits et sont visibles sous la forme d’une interface cohérente.
La parité des fonctionnalités sur toutes les plateformes
Puisque toute votre logique et votre interface utilisateur proviennent du même code, peu importe ce que vous modifiez dans votre code Flutter, cela sera visible sur toutes les distributions instantanément.
La parité des problèmes sur toutes les plateformes
Lorsqu’un problème lié à la logique de votre application est résolu, le problème est résolu sur toutes les plateformes. Si vous aviez plusieurs versions natives de votre application, le problème devrait être résolu pour chaque plateforme séparément.
La séparation des problèmes natifs
Les problèmes natifs liés à des éléments tels que le Bluetooth ou l’appareil photo sont résolus individuellement sur chaque plate-forme. Cela conduit à un certain nombre de choses. Par exemple, si Apple décide d’introduire un changement radical dans son API de la caméra, cela n’affectera pas les autres plateformes.
Une seule équipe
Lors de la constitution d’une équipe, vous n’aurez essentiellement besoin que de développeurs Flutter. Cela simplifie le processus d’embauche et rend le flux de développement beaucoup plus efficace.
Une mise sur le marché plus rapide
La logique et l’interface utilisateur de votre application ne doivent être écrites qu’une seule fois. Le temps que vous gagnez augmente linéairement avec chaque cible de plateforme supplémentaire.
Embaucher pour Flutter est facile
Flutter existe depuis plusieurs années maintenant et a gagné beaucoup de popularité depuis.
Cela signifie que si vous choisissez un développeur mobile ou web, il y a de fortes chances qu’il ait déjà essayé Flutter, voire qu’il ait écrit un petit projet dans ce langage. Vous pouvez vous attendre à trouver de nombreux développeurs ayant 1 à 2 ans d’expérience dans Flutter, mais le plus important serait de regarder leur expérience passée.
Flutter doit être considéré comme un outil plutôt que comme une plateforme. En raison de son jeune âge, il n’y a pas beaucoup de façons établies de gérer des choses comme la gestion de l’état ou la persistance. C’est pourquoi il est important d’examiner l’expérience du développeur sur la plate-forme de votre choix, car elle constitue un bon indicateur de ses performances avec Flutter.
Flutter est très facile à prendre en main
Flutter utilise des concepts comme les widgets et la programmation réactive, qui devraient être familiers aux développeurs React en particulier. Tout développeur mobile, multiplateforme ou non, peut prendre en main Flutter en un rien de temps et appliquer ses connaissances. En moyenne, un développeur mobile senior peut maîtriser Flutter en un mois environ.
Quand ne pas utiliser Flutter
La raison la plus importante de choisir Flutter est de gagner en polyvalence et, surtout, en vélocité. Tout facteur qui affecte ces deux métriques peut diminuer la valeur que ce framework peut apporter à votre projet. Voici une liste d’éléments auxquels vous devez faire attention :
Votre application est centrée sur une fonctionnalité à forte composante native.
Si Flutter excelle à franchir le pont natif en utilisant les canaux de la plateforme, il n’est pas sans coût. Si la plupart de vos fonctionnalités ciblent une fonction native, cela signifie que vous devrez écrire beaucoup de code natif ainsi qu’établir des canaux de plateforme, puis écrire des interfaces pour eux dans Flutter.
Prenons l’exemple du Bluetooth : il existe des bibliothèques qui fournissent déjà cette fonctionnalité et ces liaisons, mais si vous souhaitez opter pour une solution personnalisée qui utilise l’intégralité de la spécification Bluetooth, vous risquez de constater que ces bibliothèques sont insuffisantes. Dans cette situation, vous devrez étendre cette bibliothèque ou même écrire la vôtre. La quantité de travail nécessaire au développement d’une telle bibliothèque dépasse les avantages que vous tirez de Flutter. Ce problème est encore amplifié si vous ne visez qu’une seule plateforme.
Vous avez besoin de graphiques 3D dans votre application
Flutter utilise Skia sous le capot, une bibliothèque graphique 2D qui ne peut pas rendre d’images 3D. Il a été question de mettre en œuvre des liaisons OpenGL dans Flutter, mais ces solutions sont loin d’être achevées. Une utilisation en production serait hors de question.
Vous ne ciblez qu’une seule plate-forme
Cela annulerait tous les avantages d’une solution multiplateforme et ajouterait des frais généraux inutiles lors du développement de votre application.
Vous ne visez pas le mobile
Cela dépend de plusieurs facteurs, mais généralement, lorsque vous ciblez exclusivement d’autres plateformes que le mobile, il est préférable d’utiliser leurs frameworks natifs.
Le mot de la fin
Flutter est un outil polyvalent qui permettra à votre équipe de réaliser de belles applications multiplateformes qui seront appréciées par vos clients et les développeurs. Il dispose d’une forte communauté et d’une variété de bibliothèques prêtes à l’emploi qui accéléreront considérablement le développement, mais son support Web est encore en cours de développement, et ses défauts doivent être pris en compte lorsque vous choisissez de cibler cette plateforme.
De tous les frameworks multiplateformes, Flutter est certainement le plus prometteur, avec le support le plus large de plateformes et un support fort et stable des fonctionnalités natives.
Cependant, si votre application utilise des outils natifs avancés, comme la 3D ou des bibliothèques spécifiques à un fournisseur, il peut être utile de reconsidérer le choix d’une application entièrement native, surtout si vous ciblez un petit nombre de plateformes.
À moins que votre application n’ait des exigences techniques très spécifiques, dures et liées à une plateforme particulière, Flutter sera le compagnon idéal pour donner rapidement vie à votre vision, tout en offrant une belle interface utilisateur et une excellente expérience de programmation, ce qui rendra vos clients et vos développeurs heureux.
Vous souhaitez créer votre application Flutter ? Contactez-nous dès maintenant !