Flutter (logiciel)
Flutter est un kit de développement 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.
Créateur | |
---|---|
Développé par | |
Première version | Alpha (v0.0.6) / [1] |
Dernière version | 3.24.5 ()[2] |
Dépôt | https://github.com/flutter/flutter |
Écrit en | C, C++, Dart[3] |
Supporte les langages | C, C#, Erlang, Java, Javascript, Kotlin, Ruby , TypeScript |
Système d'exploitation | Android, iOS, Google Fuchsia, Web, Windows, macOS et Linux |
Type | Framework |
Licence | Licence BSD |
Documentation | api.flutter.dev |
Site web | flutter.dev |
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[4], avec l'intention déclarée de pouvoir effectuer un rendu cohérent à 120 images par seconde[5] . 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[6] .
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.
Le 3 mars 2021, l'équipe de développement de Flutter a annoncé la release de son SDK en version 2.0.0. De nombreux bugs et problèmes de jeunesse ont été résolus à cette occasion (ajout de null safety par exemple). De plus, l'utilisation de Windows, Linux et la version Web sont ajoutés à la release.
L'architecture du framework
modifierLes 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
modifierLes applications Flutter sont écrites en Dart et utilisent de nombreuses fonctionnalités avancées du langage.
Sur Windows, macOS et Linux[7] , Flutter est exécuté par 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[8].
Afin d'avoir de meilleures performances sur les plateformes Android et iOS, les applications Flutter sont compilées avec une compilation ahead-of-time (AOT)[9].
Le moteur de Flutter
modifierLe 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
modifierLa 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
modifierLe framework Flutter contient deux styles de widgets, les widgets Material Design qui implémentent le design de Google, et les widgets Cupertino qui implémentent l'interface d'iOS d'Apple.
Exemple de Hello World
modifierUn programme de hello world dans Flutter ressemble à ceci :
import 'package:flutter/material.dart';
void main() => runApp(HelloWorldApp());
class HelloWorldApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
//MaterialApp agit comme un emballage pour l'application et
//fournit de nombreuses fonctionnalités comme le titre(title), la page d'accueil(home), le thème(theme), etc.
return MaterialApp(
title: 'Hello World App',
//Scaffold agit comme un liant qui lie l'appBar, la barre de navigation inférieure (bottom nav bar) et
// les autres composants de l'interface utilisateur à leur place.
home: Scaffold(
//Le widget AppBar() crée automatiquement un material app bar (barre de titre).
appBar: AppBar(
title: Text('Application Hello World'),
),
//Le widget center aligne le child (enfant) au centre.
body: Center(
child: Text('Hello World'),
),
),
);
}
}
Voir aussi
modifierNotes et références
modifier- Chris Bracken, « Release v0.0.6: Rev alpha branch version to 0.0.6, flutter 0.0.26 (#10010) · flutter/flutter », sur GitHub (consulté le )
- « https://github.com/flutter/flutter/releases/tag/3.24.5 »
- « FAQ - Flutter » (consulté le )
- « Sky: An Experiment Writing Dart for Mobile (Dart Developer Summit 2015) »
- Ron Amadeo, « Google's Dart language on Android aims for Java-free, 120 FPS apps », Ars Technica,
- (en) « Flutter: the first UI platform designed for ambient computing », Flutter blog (consulté le )
- (en) « Canonical enables Linux desktop app support with Flutter », sur Ubuntu (consulté le )
- Wm Lelel, « Why Flutter Uses Dart », sur HackerNoon, (consulté le )
- stephenwzl, « Flutter’s Compilation Patterns », sur ProAndroidDev, (consulté le )