Flutter (logiciel)

Un article de Wikipédia, l'encyclopédie libre.
Flutter
Description de l'image Google-flutter-logo.png.

Informations
Créateur GoogleVoir et modifier les données sur Wikidata
Développé par Google
Première version Alpha (v0.0.6) /
Dernière version 1.22.2 ()
Dépôt github.com/flutter/flutterVoir et modifier les données sur Wikidata
Écrit en C, C++, Dart[1]
Système d'exploitation Android, iOS, Google Fuchsia, Web, Windows, macOS et Linux
Type Kit de développement
FrameworkVoir et modifier les données sur Wikidata
Licence Licence BSD
Site web flutter.dev

Flutter est un kit de développement de logiciel (SDK) d'interface utilisateur open-source créé par Google. Il est utilisé pour développer des applications pour Android, iOS, Linux, Mac, Windows, Google Fuchsia  et le web à partir d'une seule base de code .

La première version de Flutter était connue sous le nom de code "Sky" et fonctionnait sur le système d'exploitation Android. Elle a été dévoilée lors du sommet des développeurs Dart de 2015[2], avec l'intention déclarée de pouvoir effectuer un rendu cohérent à 120 images par seconde[3] . Lors du discours d'ouverture des Google Developer Days à Shanghai, Google a annoncé la sortie de Flutter Release Preview 2 qui est la dernière grande version avant Flutter 1.0. Le 4 décembre 2018, Flutter 1.0 a été publié lors de l'événement Flutter Live, ce qui représente la première version "stable" du Framework. Le 11 décembre 2019, Flutter 1.12 a été publié lors de l'événement Flutter Interactive[4] .

Le 6 mai 2020, le SDK de Dart en version 2.8 et celui de Flutter en version 1.17.0 sont sortis. La prise en charge de l'API Metal a été ajoutée, améliorant les performances des appareils iOS (environ 50 %), de nouveaux widgets Material et de nouveaux outils de suivi de réseau.

L'Architecture du framework[modifier | modifier le code]

Les principales composantes de Flutter sont les suivantes :

  • La plate-forme Dart
  • Le Moteur Flutter
  • La Bibliothèque Foundation
  • Les Widgets spécifiques à la conception

La Plate-forme Dart[modifier | modifier le code]

Les applications Flutter sont écrites en Dart et utilisent de nombreuses fonctionnalités plus avancées du langage.

Sur Windows, macOS et Linux[5] , Flutter fonctionne dans la machine virtuelle Dart et dispose d'un moteur d'exécution just-in-time. Lors de l'écriture et du débogage d'une application, Flutter utilise la compilation "Just In Time", qui permet de la recharge à chaud "hot reload", avec laquelle les modifications des fichiers sources peuvent être injectées dans une application en cours d'exécution. Flutter étend cette possibilité avec la prise en charge de la recharge à chaud stateful, où dans la plupart des cas les modifications du code source peuvent être reflétées immédiatement dans l'application en cours d'exécution sans nécessiter de redémarrage ou de perte d'état[6].

Les versions des applications Flutter sont compilées avec ahead-of-time (AOT) compilation à la fois sur Android et iOS,[7] rendant possible les hautes performances de Flutter sur les appareils mobiles.

Le Moteur de Flutter[modifier | modifier le code]

Le moteur de Flutter, écrit principalement en C++, fournit un support de rendu de bas niveau en utilisant la bibliothèque graphique Skia de Google. De plus, il s'interface avec des SDK spécifiques à la plate-forme, tels que ceux fournis par Android et iOS. Le moteur Flutter est un runtime portable pour l'hébergement d'applications Flutter. Il met en œuvre les bibliothèques de base de Flutter, y compris l'animation et les graphiques, les entrées/sorties de fichiers et de réseau, le support de l'accessibilité, l'architecture des plugins, et une chaîne d'outils d'exécution et de compilation Dart. La plupart des développeurs interagissent avec Flutter via le Flutter Framework, qui fournit un cadre réactif, et un ensemble de widgets de plate-forme, de mise en page et de foundation.

La Bibliothèque Foundation[modifier | modifier le code]

La bibliothèque Foundation, écrite en Dart, fournit des classes et des fonctions de base qui sont utilisées pour construire des applications utilisant Flutter, comme une API pour communiquer avec le moteur.

Les Widgets spécifiques à la conception[modifier | modifier le code]

Le Framework Flutter contient deux ensembles de widgets qui sont conformes à des langages de conception (design) spécifiques. Les widgets Material Design implémentent le langage de conception de Google du même nom, et les widgets Cupertino implémentent les directives de l'interface humaine iOS d'Apple .

Exemple de Hello World[modifier | modifier le code]

Un programme de hello world dans Flutter ressemble à ceci :

 1 import 'package:flutter/material.dart';
 2 
 3 void main() => runApp(HelloWorldApp());
 4 
 5 class HelloWorldApp extends StatelessWidget {
 6   @override
 7   Widget build(BuildContext context) {
 8 
 9      //MaterialApp agit comme un emballage pour l'application et 
10      //fournit de nombreuses fonctionnalités comme le titre(title), la page d'accueil(home), le thème(theme), etc.   
11     return MaterialApp(
12       title: 'Hello World App',
13 
14       //Scaffold agit comme un liant qui lie l'appBar, la barre de navigation inférieure (bottom nav bar) et
15      // les autres composants de l'interface utilisateur à leur place.     
16       home: Scaffold(
17 
18         //Le widget AppBar() crée automatiquement un material app bar (barre de titre).
19         appBar: AppBar(
20           title: Text('Application Hello World'),
21         ),
22 
23         //Le widget center aligne le child (enfant) au centre.
24         body: Center(
25           child: Text('Hello World'),
26         ),
27       ),
28     );
29   }
30 }

Voir aussi[modifier | modifier le code]

Notes et références[modifier | modifier le code]

  1. « FAQ - Flutter » (consulté le 2 avril 2020)
  2. « Sky: An Experiment Writing Dart for Mobile (Dart Developer Summit 2015) »
  3. Ron Amadeo, « Google's Dart language on Android aims for Java-free, 120 FPS apps », Ars Technica,
  4. (en) « Flutter: the first UI platform designed for ambient computing », Flutter blog (consulté le 11 décembre 2019)
  5. (en) « Canonical enables Linux desktop app support with Flutter », sur Ubuntu (consulté le 9 juillet 2020)
  6. Wm Lelel, « Why Flutter Uses Dart », sur HackerNoon, (consulté le 5 décembre 2018)
  7. stephenwzl, « Flutter’s Compilation Patterns », sur ProAndroidDev, (consulté le 6 décembre 2018)

Liens externes[modifier | modifier le code]