Si Google a opté pour Dart, c’est parce qu’il offre deux modes de fonctionnement. Le premier, nommé AOT (pour Ahead Of Time), permet de générer une application native pour chaque plateforme. Le code sera optimisé directement pour l’architecture sur laquelle il fonctionnera.
Le deuxième mode de fonctionnement est dit JIT (Just-In-Time) et offre la fonctionnalité de Hot Reload lors des développements. L’idée du Hot Reload avec Flutter est de corriger le problème du temps nécessaire entre chaque build en ne mettant plus que quelques millisecondes (voire secondes dans le pire des cas) entre chaque modification. Le développement de son application est alors bien plus rapide.
Outre ces deux modes, Dart est aussi très performant pour gérer l’allocation et le “garbage collector”, c’est-à-dire l’élimination des objets en mémoire qui ne sont plus utilisés.
La première version stable de la boîte à outils de développement multiplate-forme a été publiée il y a à peine trois mois. Il y a quelques heures, Google a annoncé la première fonctionnalité mise à jour pour Flutter, Flutter 1.2, au Mobile World Congress, ainsi qu'une nouvelle suite d'outils de programmation Web appelée Dart DevTools.
L'un des plus gros avantages de Flutter par rapport à ses alternatives est la communauté de développement. Flutter est open source pour que vous puissiez voir comment il est construit et faire des suggestions pour contribuer à son développement. Google travaille constamment à améliorer la stabilité et les performances du framework, tout en ajoutant quelques outils de développement intéressants.
Flutter 1.2
Envoyé par Equipe Flutter
Les développeurs mobiles viennent d'horizons divers et préfèrent souvent des outils de programmation et des éditeurs différents. Flutter lui-même prend en charge différents outils, notamment une prise en charge de premier ordre d'Android Studio et de Visual Studio Code, ainsi que la création d'applications à partir de la ligne de commande. L’équipe savait donc que le framework avait besoin de flexibilité dans la manière d’exposer les outils de débogage et d'inspection du runtime.
En plus de Flutter 1.2, l’équipe a lancé une préversion d’une nouvelle suite d’outils de programmation Web pour aider les développeurs Flutter à déboguer et à analyser leurs applications. Ces outils sont désormais disponibles pour une installation aux côtés des extensions pour Visual Studio Code et Android Studio, et offrent un certain nombre de fonctionnalités :
- Un inspecteur de widgets, qui permet la visualisation et l'exploration de la hiérarchie de l'arborescence utilisée par Flutter pour le rendu.
- Une vue chronologique qui vous aide à diagnostiquer votre application au niveau image par image, en identifiant le travail de rendu et de calcul susceptible de provoquer une "anarchie" de vos applications.
- Un débogueur de niveau source complet qui vous permet de parcourir du code, de définir des points d'arrêt et d'analyser la pile d'appels.
- Une vue de journalisation indiquant l'activité que vous enregistrez depuis votre application, ainsi que les événements liés au réseau, à l'infrastructure et à la récupération de place.
Dart 2.2
Les développeurs de Flutter et Dart seront heureux de savoir que Dart 2.2 est également disponible. Les développeurs de Flutter devraient noter que Dart 2.2 améliore de 15 à 20% les performances. De plus, le langage a acquis la capacité d'écrire des littéraux Set en utilisant des accolades {}, similaires à Python et à d'autres langages. Cela permet de créer un ensemble en tant que constante.
Dart 2.2 est disponible au téléchargement dès maintenant et est également intégré à la version actuelle de Flutter 1.2. Vous pouvez également jouer utiliser Dart 2.2 maintenant dans l'application Web officielle DartPad.
Pourquoi utiliser Flutter ?
En 2017, David Ford, un développeur logiciel, s’est laissé aller à énoncer quelques raisons qui, selon lui, sont très intéressantes à propos de ce framework :
- Son architecture est presque similaire à celle de React, un point positif pour ceux qui, comme David, aiment React ;
- Flutter est basé sur Dart, un langage de programmation moderne (développé par Google) qui est très facile à apprendre si vous connaissez déjà Java ou JavaScript. Dart a une vérification facultative du type statique. Dart peut également se compiler sur JavaScript. En fait, Dart a d'abord été conçu comme un langage de compilation JavaScript. Et il y a une machine virtuelle Dart. Vous pouvez donc utiliser Dart pour les applications côté serveur et les utilitaires de ligne de commande (tout comme Node). Et, bien sûr, Dart peut être compilé pour fonctionner sur les téléphones mobiles. Cela met Dart en concurrence avec d'autres langages « full stack » de seconde génération comme Kotlin ;
- Qu'est-ce que Polymer, GWT et Adobe Flex ont en commun et dont React ne dispose pas ? Une bibliothèque de widgets UI intégrée. Ceci, pour David, est l’une des grosses faiblesses de React. Raison pour laquelle il estime que si vous avez déjà travaillé avec un framework comme Flex, vous saurez apprécier le fait qu’il soit livré avec un ensemble de composants de haute qualité ;
- L'approche de Flutter à l'IU multiplateforme est unique. David assure que Flutter n'est pas comme Cordova ou PhoneGap qui sont essentiellement des applications JavaScript/HTML/CSS déguisées en applications natives mobiles. Les applications Cordova et PhoneGap s'exécutent dans un navigateur mobile enveloppé dans un composant natif (une vue web). Ceux-ci sont lancés comme des applications natives, mais au fond sont des applications Web. Ils n'utilisent pas de widgets mobiles. Au lieu de cela, ils utilisent les éléments Web familiers (<input>, <select>, etc.) pour créer l'interface utilisateur.
- Flutter n'est pas non plus comme React Native (ou NativeScript). React Native utilise les widgets natifs. Cela signifie que vous devez créer des applications distinctes pour Android et iOS. Cela signifie également que l'application ressemble et se comporte plus nativement que, par exemple, une application qui est passée par Cordova ou PhoneGap.
- David avance que Flutter réinvente sa propre bibliothèque de composants UI de zéro. Ces composants sont dessinés à l'aide des primitives graphiques de bas niveau des plateformes. Ainsi, les composants UI de Flutter ne sont pas des éléments HTML ni des widgets Android/iOS natifs. Ce sont des widgets Flutter. Ils ont un look-and-feel enfichable. Ils peuvent donc ressembler à des widgets natifs iOS ou à des widgets natifs Android. C'est essentiellement la même approche que JavaSwing ;
- Il n'existe pas de DSL UI externes (c'est-à-dire des fichiers HTML ou XML). Toute l'interface utilisateur est écrite en Dart. Ceci, pour David, est une grande victoire. Il avoue avoir une opinion étrange selon laquelle les DSL externes sont la racine de tout le mal. Ils réduisent considérablement la quantité d'aide qu'un vérificateur de type statique (ou IDE) peut vous fournir. Ils éliminent la refactorisation et la réutilisation du code. C'est l'une des raisons pour lesquelles il aime React.
- Avec Flutter, les UI sont codées dans le même langage que le reste de l'application : Dart. En outre, il n'y a pas d'équivalent JSX dans Flutter. Donc, quand il dit que Flutter est comme React, ce qu’il veut dire, c'est que Flutter est comme React sans JSX. Pour lui, le code privé de JSX est assez indigeste dans la combinaison React/JavaScript, mais plutôt élégant dans la combinaison Flutter/Dart ;
- Enfin, Flutter dispose d’un support de première classe pour son IDE préféré (JetBrains).
Source : Google
Et vous ?
Avez-vous déjà utilisé Flutter ? Qu'en pensez-vous ?
En général vous servez-vous d'une boîte à outils multi-plateformes pour vos développements mobiles ? Lesquelles avez-vous déjà essayé ?
Voir aussi :
Flutter va bientôt permettre d'écrire de véritables applications multiplateformes y compris pour le desktop et pourrait rivaliser avec Electron
Google publie la Preview finale de Flutter, son SDK mobile Android et iOS, la dernière étape majeure avant la publication de la version stable 1.0
Flutter, le SDK mobile pour Android et iOS sort de la phase bêta, Google annonce la Release Preview 1, une étape importante avant la version 1.0