2. FLUTTER C’EST QUOI ?
• Flutter est un nouveau Software Development Kit créé par Google,construit en C, C++ et
Dart,dont l’objectif est de nous proposer une nouvelle approche «cross-platform» de
développement mobile.En se basant uniquement sur le langage Dart,il permet de construire
des applications natives Android et iOS.
• Flutter se situe au même niveau que React, Native ou Xamarin,ce qui signifie qu’à partir du
code écrit en Dart va ensuite être généré du code Android et iOS.
3. POURQOUI FLUTTER ?
• Apple lance son SDK en 2008, Google en 2009,chacun basé sur son langage propre :
Objective-C et Java.
• L’application communique avec la plateforme pour créer des widgets ou accéder à
des services comme l’appareil photo. Le rendu des widgets est fait sur un Canvas et les
événements sont renvoyés aux widgets. C’est une architecture assez simple,cependant, il faut
créer des applications différentes pour chaque plateforme car les widgets et le langage
de développement sont différents chez iOS et Android.
4. POURQUOI FLUTTER ?
• Les premières plateformes multi-OS se sont basées sur le Javascript et les webviews.On
pourra citer différents frameworks: Titanium,PhoneGap, Cordova,Ionic…
• Avant de publier son SDK iOS,Apple encourageait les développeurs à développer des webapps
pour l’iPhone… l’utilisation des technologies web pour faire du cross-platform s’est donc
imposé comme une évidence.
5. POURQUOI FLUTTER ?
• Des plateformes réactives comme ReactJS ont été ensuite plébiscitées, car elles simplifient la
création des webviews. En 2015, la création de React Native a apporté ces technologies au
monde du mobile.
6. POURQUOI FLUTTER ?
• Flutter propose des vues dynamiques similaire à React Native. Ce framework choisit
cependant une approche différente pour réduire les problématiques de performance (dues au
pont).Ainsi, Flutter a choisi d’utiliser Dart,un langage compilé (contrairement au Javascript).
• Dart est compilé“en amont” en code natif pour les différentes plateformes cibles. Cela
permet à Flutter de communiquer avec la plateforme sans passer par un pont (“bridge”,
permettant de passer d’un contexte à l’autre). Le fait de compiler le code permet également
de réduire le temps de démarrage de l’application.
7. POURQUOI FLUTTER ?
• Flutter déplace les widgets et le rendu dans l’application. Cela permet aux widgets
d’être personnalisables et extensibles.Tout ce dont Flutter a besoin de la part de la
plateforme est le Canvas dans lequel afficher le rendu du widget afin qu’il apparaisse à l’écran,
qu’il puisse recevoir des événements (clics, gestes) et accéder aux services (GPS,appareil
photo etc).
• Il y a donc toujours une interface entre le programme en Dart (en vert) et le code de la
plateforme (en bleu, pour iOS et Android). Cette interface se charge de l’encodage et du
décodage des données… mais cette interface est incomparablement plus rapide que
le pont Javascript.
• Le fait de déplacer les widgets et le moteur de rendu dans l’application ne modifie pas son
poids.Le poids minimum d’une application Flutter sur Android est d’environ 6.7MB,ce
qui est comparable au poids d’applications construites avec des outils similaires.
8. POINTS FORT DE FLUTTER
• haute vitesse de développement avec des fonctionnalités comme le « hot reload »,un
framework reactif, des widgets pré-existants et des outils intégrés aux environnements de
développement
• designs de qualité, personnalisables,reposant sur des widgets, une bibliothèque
d’animations,une architecture en couches extensible
• expérience de haute qualité sur les différentes plateformes grâce à un coeur à haute
performance et une prise en compte de l’interopérabilité des plateformes
9. HOT RELOAD
• Flutter implémente un système d’hot reload (rafraichissement à chaud) qui permet un
rechargement de l’ordre de la seconde sur le mobile ou l’émulateur. Le hot reload est stateful,
ce qui signifie que l’état de l’application est conservé après chaque rechargement.
• Le hot reload fonctionne en injectant le code mis à jour dans la machine virtuelle en cours
d’exécution. Cela inclut non seulement l’ajout de nouvelles classes mais aussi l’ajout de
méthodes et de champs aux classes existantes
• Il y a en revanche des changements de code qui ne sont pas pris en compte dans le hot reload
– l’initialisation de variables globales
– l’initialisation de champs statiques
– la modification de la méthode main