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.

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, avec l'intention déclarée de pouvoir effectuer un rendu cohérent à 120 images par seconde . Lors du discours d'ouverture des  à 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
.

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 
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 
Les applications Flutter sont écrites en Dart et utilisent de nombreuses fonctionnalités avancées du langage.

Sur Windows, macOS et Linux , 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 (), 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. 

Afin d'avoir de meilleures performances sur les plateformes Android et iOS, les applications Flutter sont compilés avec une compilation ahead-of-time (AOT).

Le Moteur de Flutter 
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 
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 
Le 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 
Un 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 
 Apache Cordova
 React Native
 Qt
 Xamarin
 NativeScript

Notes et références

Liens externes 

Site web officiel

Système de gestion de versions
Logiciel libre sous licence GPL
Logiciel pour Unix
Logiciel pour Windows
Produit lancé en 2017