Flutter est le framework d'interface de Google. Son pari : écrire une seule fois l'application, et la déployer sur Android, iOS, web, Windows, macOS et Linux — avec des performances natives et un rendu identique partout.
Là où d'autres frameworks « cross-platform » s'appuient sur les composants du système (et leurs différences), Flutter dessine lui-même chaque pixel via son moteur de rendu. Résultat : un contrôle total de l'UI et une cohérence parfaite d'une plateforme à l'autre.
Pourquoi Flutter ?
| Atout | En clair |
|---|---|
| 🎯 Un seul code | Mobile + web + desktop depuis la même base Dart |
| ⚡ Performances natives | Compilé en code machine (AOT), 60/120 fps |
| 🔥 Hot reload | Les changements s'affichent en < 1 s, sans relancer l'app |
| 🎨 UI sur-mesure | Tout est un widget : contrôle total du pixel |
| 📦 Riche écosystème | Des milliers de packages sur pub.dev |
Le concept clé : tout est un widget
En Flutter, l'interface prend la forme d'un arbre de widgets. Un bouton, un texte, une marge, voire la structure de la page : tout est un widget, que l'on assemble de manière cohérente :
import 'package:flutter/material.dart';
void main() => runApp(const MonApp());
class MonApp extends StatelessWidget {
const MonApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(title: const Text('Bonjour Flutter')),
body: const Center(
child: Text('Une seule base de code, partout.'),
),
),
);
}
}
Stateless vs Stateful
Deux familles de widgets, à bien distinguer :
StatelessWidget— affichage figé, qui ne change pas tout seul (un libellé, une icône).StatefulWidget— possède un état mutable et se redessine quand cet état change (un compteur, un formulaire, une animation).
Pour des états partagés entre écrans, on passe vite à une solution de gestion d'état : Provider, Riverpod, Bloc… qui évitent de faire transiter l'état à la main dans tout l'arbre.
Le hot reload : l'argument qui change tout
Le hot reload injecte le code modifié dans l'application en cours d'exécution, en conservant l'état. Concrètement : on ajuste une couleur, un espacement ou une logique, puis le résultat apparaît instantanément, sans revenir à l'écran d'accueil. C'est ce qui rend le développement d'interface particulièrement fluide.
flutter run # lance l'app, puis 'r' = hot reload, 'R' = redémarrage
Construire pour la production
flutter build apk --release # Android (APK)
flutter build appbundle --release # Android (AAB, pour le Play Store)
flutter build ios --release # iOS
flutter build web # Web
Quand choisir Flutter ?
Oui, plutôt Flutter quand :
- vous visez plusieurs plateformes avec une petite équipe ;
- l'identité visuelle doit être identique et soignée partout ;
- vous voulez itérer vite sur l'UI (hot reload).
À nuancer quand :
- l'application doit se fondre pixel près dans les composants natifs de chaque OS ;
- vous dépendez fortement d'API système très spécifiques (des plugins existent, mais à vérifier).
Flutter repose sur le langage Dart (voir l'article dédié). La combinaison des deux — un langage pensé pour l'UI et un framework qui dessine lui-même l'interface — explique pourquoi une seule personne peut livrer une application soignée sur mobile, web et desktop.