Partager cet article

Comme plus de 28 000 freelances, recevez des offres de mission tech à la messure de votre talent sur FreelanceRepublik.

Derniers articles

AccueilMétiers de la TechDéveloppeur MobileQu'est-ce que Flutter, le SDK de développement multi-plateformes ?

Qu’est-ce que Flutter, le SDK de développement multi-plateformes ?

Flutter, vous avez sûrement entendu parler de cette techno mobile, sans toutefois en connaître précisément le fonctionnement et les utilisations.

Ce kit de développement made in Google permet à un développeur de créer une application iOS et Android grâce à une seule base de code. De plus en plus utilisé, Flutter est un outil possédant de nombreux avantages.

Vous voulez en savoir plus sur cette nouvelle techno ? Suivez le guide !

Flutter : qu’est-ce que c’est ?

Logo du SDK de développement Flutter

L’historique

Créé par Google, Flutter est un kit de développement mobile (ou SDK – Software Development Kit), dont la première version stable est sortie en 2018 (bien que la techno ait été dévoilée aux développeurs dès 2015).

Au fil des années, elle n’a cessé d’évoluer, de se perfectionner, pour améliorer sa prise en charge des différents OS et sa rapidité d’exécution.

La dernière version de Flutter est la 3.3.2, sortie en septembre 2022.

Flutter dans la technique

Un fonctionnement spécifique

Flutter est donc un SDK, dont le but est de pouvoir être compilé et déployé sur diverses plateformes avec un seul code source. C’est le cas – et c’est sa principale utilisation – avec Android et iOS, mais il est également possible de développer pour les OS desktop (Linux, MacOS et Windows) avec Flutter.

Les applications Flutter sont écrites avec le langage Dart, lui-même créé par Google, dont la première version remonte à 2011.

L’utilisation de ce langage apporte deux gros avantages au développement d’applications mobile :

  • la compilation AOT (pour Ahead Of Time), permettant une rapidité d’exécution sur mobile accrue, grâce à la traduction du programme en langage évolué vers le langage machine avant l’exécution du programme ;
  • la compilation JIT (Just-In-Time), qui apporte un hot reload (rafraichissement instantané), utile pendant la phase de développement.

Dart a une syntaxe assez spécifique, dont le fonctionnement est comparable au C++.

Tout est widget

Flutter, contrairement à d’autres technos de développement hybride, dont on reparlera, vient nativement avec une bibliothèque graphique de widgets, qu’il faut utiliser pour construire l’interface graphique.

Une interface d’application développée avec Flutter est donc un ensemble de widgets imbriqués, formant au final l’écran tel qu’on le voit.

La bibliothèque contenant ces briques copie les designs natifs des différents OS, ce qui permet d’avoir une app qui paraît native, respectant ainsi les guidelines des différents OS, indispensables à la validation des applications avant parution sur les stores.

En revanche, lorsqu’un système d’exploitation (iOS ou Android, dans ce cas) modifie son interface, c’est-à-dire à chaque mise à jour majeure, la bibliothèque de Flutter doit être redesignée pour prendre en compte ces changements.

Exemple d’implémentation de Flutter

Pour mieux comprendre comment est codée une app Flutter, le mieux reste toujours d’en voir un morceau de code ! Voici un exemple d’implémentation du fameux Hello World avec ce SDK et Dart :

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'),
        ),
      ),
    );
  }
}

Et si vous voulez voir quelques exemples d’applications développées avec Flutter, le site officiel en a une liste, à retrouver en suivant ce lien.

Flutter et les autres technos mobile hybride

Nous l’avons rapidement mentionné, Flutter est un concurrent direct aux autres technos de développement mobile multi-plateformes, ou hybrides.

Le mot ‘hybride’, dans le cadre d’une application mobile, est un terme approximatif désignant une application déployée sur les différents stores, créée à partir d’un seul code source. Cette définition est à opposer au développement d’applications natives, qui elles doivent utiliser des technos spécifiques (et parfois propriétaires) pour chaque OS.

Citons quelques-unes de ces technos dites hybrides :

Toutes ces technos, avec Flutter, ont un point commun : faciliter le développement mobile en utilisant un seul code pour plusieurs systèmes d’exploitation.

Mais c’est tout ce qu’elles ont en commun.

Là ou Flutter utilise Dart (deux technos créées par Google), React Native se base sur React (Facebook). Cordova et Capacitor sont des wrappers, acceptant tout code JavaScript, alors que Xamarin se base sur du C#.

Toutes ces technos étant différentes, chacune vient avec ses avantages et inconvénients.

Là où Flutter se démarque, c’est par sa rapidité d’exécution, notamment grâce à sa compilation AOT, dont nous avons déjà parlé.

Cependant, les smartphones étant de plus en plus puissants, et les technos hybrides de plus en plus au point, cet avantage n’est utile que dans une minorité des cas d’utilisation. Pour l’immense majorité des apps développées, une techno réputée plus lente (comme Cordova) fait très bien le travail, comme le montrent les centaines d’apps utilisant ce wrapper déjà présentes sur les stores.

Flutter, meilleure techno mobile en 2022 ?

Il est temps de répondre à la question : est-ce que Flutter est la techno mobile à privilégier en 2022 ? Est-ce l’outil du futur, qu’il ne faut pas manquer ?

Tâchons de répondre à cette question !

Les avantages à utiliser Flutter

Résumons les avantages que possède Flutter :

  • la compilation JIT et AOT, facilitant le développement et la vélocité de l’app une fois déployée ;
  • une base de code unique (contrairement au natif) ;
  • l’approche ‘widget only’ qui évite le développement long et coûteux d’une interface graphique complète ;
  • c’est une techno maintenue par Google, et donc pérenne.

Les inconvénients de Flutter

Mais ce kit de développement vient aussi avec quelques inconvénients :

  • Dart ! En effet, Flutter utilise un langage de programmation à part, qui nécessitera une montée en compétences assez importante ;
  • l’utilisation des widgets a aussi un inconvénient : les librairies graphiques doivent être mises à niveau à chaque chaque mise à jour des systèmes d’exploitation, si son design vient à changer (une app Flutter nécessitera donc éventuellement plus de maintenance) ;
  • l’import de ces librairies de widgets et de développement peut considérablement alourdir l’application générée.

Conclusion

Alors, Flutter est-elle la techno mobile à utiliser en 2022 ?

Si vous n’utilisez pas déjà d’outil de développement mobile, cela peut être le cas, oui ! Populaire auprès des développeurs, elle a de beaux jours devant elle.

Si, en revanche, vous maîtrisez déjà une techno mobile (par exemple React Native), les gains de performance que vous aurez ne valent peut-être pas la peine d’apprendre un nouveau langage.

Mais le choix d’une techno est toujours en partie subjectif ! Donc rien ne vous empêche de prendre quelques heures pour vous essayer au développement Flutter, pour ensuite décider de ce qui est le mieux pour votre projet.

Ces articles peuvent vous intéresser

Ne perdez plus de temps à prospecter en vain. Inscrivez-vous gratuitement sur FreelanceRepublik, et recevez de belles offres de missions tech. FreelanceRepublik est gratuit pour les freelances.