2. Présentation de Flutter

Avant-propos

Flutter

Flutter, qu’est-ce que c’est ?

Flutter est un framework open source créé par Google qui permet de développer des applications multiplateformes.

Avec Flutter, il est possible de développer un projet et de l’exporter sur Android, iOS, macOS, Linux, Windows ou encore le web et tout ceci avec la même base de code.

Aujourd’hui, il est utilisé en production et on peut trouver de nombreuses applications en Flutter sur les stores Android et iOS. Des applications qui ont été aussi bien développées directement en Flutter que traduites depuis un projet iOS ou Android. Parmi les applications Flutter les plus connues, on peut retrouver notamment Google Ads, eBay motors, NuBank (néobanque brésilienne) … En 2021, on estimait qu’il y avait environ 150 000 applications faites avec Flutter sur le PlayStore (Android).

Dart

Comment faire une application en Flutter ?

Pour faire une application avec le framework Flutter, il faudra utiliser le langage Dart. Dart est un langage orienté objet créé par Google disponible depuis 2013, dont le but initial était de remplacer JavaScript pour le web côté client.

Les particularités de ce langage sont la compilation AOT, qui veut dire “Ahead of time” se traduit par “compilation anticipée”. Cette spécificité rend Flutter intéressant, car elle permet un gain de temps non négligeable lors du développement d’une application avec le système de Hot Reload qui permet de rafraichir une vue sans avoir à recompiler entièrement son projet.

Une autre particularité est aussi la capacité à faire des interfaces utilisateurs déclaratives, plus besoin de storyboard (iOS) et de XML (Android), tout se fait de manière programmatique et c’est d’ailleurs aussi vers quoi se dirige le développement iOS avec Swift UI et Android avec Jet Pack Compose.

Par exemple, pour afficher un texte dans une vue, il faudra écrire :

Text('Flotteur <3');

Dart est un langage single-thread avec un système d’ event loop comme JavaScript. Il est bien sûr possible de créer des Threads et de faire de l’asynchrone. Donc si vous avez déjà fait un peu de Java, de JavaScript ou du C#, Dart ne devrait pas être un langage compliqué à aborder pour vous.

Pour ceux qui débutent en programmation, Dart est un langage qui reste facile à aborder, cependant des connaissances dans les langages natifs des plateformes sur lesquelles vous comptez développer vos applications Flutter sont un plus, nous verrons d’ailleurs des bases de Swift et de Kotlin ultérieurement.

Flutter

Environnement de programmation

Pour programmer en Flutter, vous pouvez utiliser 3 IDE différents,IntelliJ, Android Studio et Visual Studio Code. Pas d’orientation ici sur le choix, chacun a ses avantages et inconvénients, mais les cours comporterons des captures d’écran faites sur Android Studio et IntelliJ. Concernant les systèmes d’exploitations sur lesquels vous pouvez développer des projets en Flutter, nous avons Windows, macOS, Linux et Chrome OS.

Pour commencer à faire un projet en Flutter il vous faudra suivre les indications d’installation du site officiel, flutter.dev et installer les plugins nécessaires sur votre IDE, vous pourrez commencer à développer votre premier projet.

Néanmoins, pour ce qui est de la compilation, il est possible de limiter l’usage d’un Mac via des plateformes d’intégration continue qui feront par exemple des exports en .ipa (format des applications iOS). L’accès à un Mac physique reste tout de même fortement conseillé si vous souhaitez publier sur l’App Store et pour d’effectuer certains réglages sur XCode (personnaliser l’icône de l’application, ajouter une clé pour utiliser Google Map…).

Lorsque vous développerez une application, vous pourrez accéder aux émulateurs comme pour du développeur mobile natif et vous pourrez aussi exporter sur vos devices. Attention, pour iOS, vous devrez obligatoirement avoir un ordinateur mac avec Xcode d’installé.

Faire communiquer Flutter et natif

Il est possible de faire une application entièrement en Flutter ou avec des composants natifs et des channels (méthodes qui permettent de communiquer avec du code natif à la plateforme de destination, par exemple du Kotlin ou du Swift si vous faites du mobile). Vous pourrez ainsi développer vos propres plugins pour vous connecter par exemple à des capteurs ou faire un pont entre une librairie native et Flutter.

Flutter

Un code, plein de possibilités

Il y a aujourd’hui beaucoup de librairies qui sont compatibles avec Flutter sur pub.dev, vous pourrez intégrer les mêmes fonctionnalités que du natif, par exemple l’ajout de Firebase, faire des animations, de la persistance de données et même des jeux vidéos, (étant donné que Flutter permet de faire du 60 FPS, autant en profiter). Et si une librairie Flutter n’est pas disponible, vous n’aurez qu’à créer la vôtre grâce à ces fameuses MethodChannel !

Si le développement multiplateforme vous a toujours tenté et que vous n’osiez pas vous y mettre, avec Flutter, vous pouvez foncer, la documentation est bien fournie et il y a une communauté très active autour de ce projet.

Lectures

https://insights.dice.com/2019/03/27/fall-rise-dart-google-javascript-killer/ https://medium.com/@purvajg/microtasks-and-event-loops-in-dart-9f5863f031d8