Flutter est un framework open source créé par Google pour la réalisation d’applications multiplateformes. Il permet de construire des applications qui pourront être déployées pour différentes plateformes (Android/iOS), et pour le web et le desktop.
Flutter se positionne différemment par rapport aux frameworks multiplateformes existants, notamment avec l’obtention d’une application native possédant une interface utilisateur n’utilisant pas de composants natifs, ni de webview. En effet tous les composants de votre interface utilisateur sont construits par le moteur graphique de Flutter écrit en C++ et dessiné par les équipes de Google, en étroite relation avec les équipes de Material Design si vous souhaitez utiliser le design material.
Ces particularités permettent d’obtenir d’excellentes performances sur toutes les plateformes tout en évitant le coût d’utilisation de composants natifs qui sont eux amenés à évoluer à chaque nouvelle version d’OS. De plus, aucun bridge est nécessaire pour communiquer avec les composants natifs du device, puisque tout est géré par Flutter. Ainsi, votre application sera identique et aussi performante sur n’importe quel device ou OS. Toutefois, il reste possible d’accéder aux fonctionnalités natives (Kotlin, Swift, Java, Obj-C) en utilisant un système de bridge (channel en Flutter).
Tout ceci est réalisable et s’appuie sur les forces du langage Dart, lui aussi conçu par Google à partir de 2011. Ses deux modes de compilation offrent une expérience de développement inégalable. Le premier, JIT (Just In Time), permet d’acquérir la fonctionnalité de Hot Reload consistant à pouvoir rafraîchir l’interface utilisateur, ajouter des fonctionnalités sans avoir à reconstruire l’application à chaque changement/ajout en quelques millisecondes. Le second, AOT (Ahead Of Time), est utilisé lorsque vous voulez publier votre application (mode release), permettant d’avoir de meilleures performances et de réduire la taille de l’application.
En ce qui concerne l’interface utilisateur, tout est écrit en Dart et tout est widget. Flutter arrive avec des centaines de widgets vous permettant de réaliser l’interface utilisateur que vous souhaitez en effectuant une composition de widgets sous forme d’arborescence.
https://flutter.dev/docs/reference/tutorials
Setup : https://flutter.dev/docs/get-started/install
Avec Android Studio : https://flutter.dev/docs/get-started/editor
en mode console (cliquez sur flutter_console) pour pouvoir lancer dans chrome l’appli :
flutter config --enable-web
Structure d’une application :
Une application est définie par le mot clef MaterialApp
qui est situé à la racine de l’arbre des widgets :
void main() => runApp(new MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: ‘Flutter Demo’,
theme: ThemeData(
primarySwatch: Colors.red,
),
home: App(),
);
}
}
Ensuite la classe (ici App()) contiendra les widgets de l’application
Générer une application signée (pour diffuser sur Google Play) :
L’application étant chargée dans Android Studio, il est nécessaire de la réouvrir sous Android
Attention si la génération échoue : build\app\intermediates\flutter\profile\libs.jar (The system cannot find the path specified)
Alors modifier le fichier Gradle en utilisant ‘com.android.tools.build:gradle:3.5.0’
Références :
Avis : https://medium.com/swlh/flutter-vs-native-vs-react-native-examining-performance-31338f081980
