Flutter : tout le monde en parle, mais pourquoi ?

Vous avez probablement déjà entendu parler de Flutter, un framework open source créé par Google pour la réalisation d’applications multiplateformes.

Flutter permet donc de construire en une seule fois des applications qui pourront être déployées pour différentes plateformes (Android/iOS), et même plus avec l’arrivée de Flutter pour web et desktop. En soit Flutter pourrait fonctionner sur n’importe quel device possédant un écran plus ou moins intelligent. La première version a été release en Décembre 2018 ce qui en fait un framework encore jeune.

 

 

Flutter, comment ça fonctionne ?

Flutter se positionne différemment par rapport aux frameworks multiplateformes existants, notamment avec l’obtention d’une application native possédant une interface utilisateur n’utilisant pas de composants natifs, ni de webview. En effet tous les composants de votre interface utilisateur sont construits par le moteur graphique de Flutter écrit en C++ et dessiné par les équipes de Google, en étroite relation avec les équipes de Material Design si vous souhaitez utiliser le design material.

Ces particularités permettent d’obtenir d’excellentes performances sur toutes les plateformes tout en évitant le coût d’utilisation de composants natifs qui sont eux amenés à évoluer à chaque nouvelle version d’OS. De plus, aucun bridge est nécessaire pour communiquer avec les composants natifs du device, puisque tout est géré par Flutter. Ainsi, votre application sera identique et aussi performante sur n’importe quel device ou OS. Toutefois, il reste possible d’accéder aux fonctionnalités natives (Kotlin, Swift, Java, Obj-C) en utilisant un système de bridge (channel en Flutter).

Tout ceci est réalisable et s’appuie sur les forces du langage Dart, lui aussi conçu par Google à partir de 2011. Ses deux modes de compilation offrent une expérience de développement inégalable. Le premier, JIT (Just In Time), permet d’acquérir la fonctionnalité de Hot Reload consistant à pouvoir rafraîchir l’interface utilisateur, ajouter des fonctionnalités sans avoir à reconstruire l’application à chaque changement/ajout en quelques millisecondes. Le second, AOT (Ahead Of Time), est utilisé lorsque vous voulez publier votre application (mode release), permettant d’avoir de meilleures performances et de réduire la taille de l’application.

Beaucoup de concepts utilisés par Dart sont présents dans les langages récents (Swift, Kotlin…), ce qui répond à énormément d’attentes des développeurs sur l’utilisation d’un langage de programmation. Nous ne sommes ainsi pas perdus lors de son utilisation.

En ce qui concerne l’interface utilisateur, il n’y a pas besoin d’utiliser un DSL UI externe (XML, HTML…). Tout est écrit en Dart et tout est widget. Flutter arrive avec des centaines de widgets vous permettant de réaliser l’interface utilisateur que vous souhaitez en effectuant une composition de widgets sous forme d’arborescence (cf. fig1). Ce principe permet aussi de pouvoir réaliser des animations plus ou moins complexes simplement avec un code qui reste compréhensible.

Flutter, leader du développement mobile ?

Flutter se positionne donc comme un futur leader du développement mobile. Mais son arrivée reste récente et la communauté est en pleine expansion, contrairement à son principal concurrent React Native qui a su s’imposer sur le marché. L’apprentissage d’un nouveau langage peut aussi paraître contraignant pour certains développeurs, mais c’est un risque pris par Google pour avoir une combinaison proche de la perfection.

Un risque à prendre en compte avant de se lancer dans l’aventure est le besoin de certaines fonctionnalités native. Beaucoup de librairies tierces existent mais ne sont pas forcément maintenues, ce qui peut vous pousser à devoir réaliser du code natif pour certaines fonctionnalités.

Une future version web pour Flutter

Les équipes de Google sont en train de prévoir une version web, actuellement en beta, et une version desktop (macOS, Windows, Linux) en alpha. Avec ce positionnement Flutter pourra se lancer sur un marché autre que le mobile tout en gardant un seul code source et une application toujours native, c’est-à-dire que votre application Flutter web sera compilée JavaScript et conservera le même rendu que votre application mobile. Il ne vous restera qu’à adapter votre interface utilisateur pour avoir un rendu correspondant à une application web.

Le fonctionnement est assez impressionnant et aucun changement n’est nécessaire au niveau de votre code pour déployer votre application sur toutes les plateformes. Flutter veut donc se positionner comme un vrai framework multiplateformes, et pas seulement se limiter au mobile. Avec une documentation extrêmement complète et une courbe d’apprentissage rapide, l’année 2020 est le moment de se lancer avec Flutter.