Développer des Applications Multiplateformes avec Flutter

Tags :
  • MON
  • 2024-2025
  • développement mobile
  • Flutter
  • Dart
Auteurs :
  • Serigne Mbaye Sy AMAR

Ce MON explique comment utiliser Flutter, un framework multiplateforme de Google, pour créer des applications avec une seule base de code. Il couvre l'installation, la configuration, la création de projets, et les concepts de base comme les widgets et les layouts. Il introduit aussi la gestion de l'état avec Provider, la navigation entre pages, et les appels HTTP pour interagir avec des API.

  • Connaissance de base en programmation (de préférence en Dart, mais pas obligatoire).

Les lien utiles pour la compréhension de celui-ci:

Documentation officielle Flutter

API Flutter Documentation

Table des matières

Introduction

  1. Installation et Configuration de l'Environnement

  2. Les Widgets : Le cœur de Flutter

  3. Organisation de l'Interface : Les Layouts

  4. Gestion de l'État avec Provider

  5. Navigation dans Flutter

  6. Appels HTTP et Interactions avec une API

Conclusion

Introduction

Flutter est un framework open-source développé par Google. Il permet de créer des applications multiplateformes (Android, iOS, Web, Desktop) à partir d'une seule base de code, ce qui réduit le coût et le temps de développement. L'un des principaux atouts de Flutter est sa performance proche du natif, grâce au langage Dart et à son moteur graphique optimisé.

Dart, le langage derrière Flutter, est un langage moderne et rapide pour le développement client. Avec Flutter, tout est un widget, permettant ainsi une personnalisation et un contrôle total sur l'interface utilisateur.


1. Installation et Configuration de l'Environnement

Installation d'Android Studio

Installation des plugins Flutter

Installation de Flutter

Création d'un projet Flutter

Création d'un émulateur Android


2. Les Widgets : Le cœur de Flutter

Qu'est-ce qu'un widget ?

Dans Flutter, tout est un widget. Cela signifie que chaque composant visuel ou structure est un widget, que ce soit un texte, une image, un bouton ou même un conteneur. Flutter repose sur une architecture basée sur les widgets pour permettre une construction des interfaces utilisateur.

Il existe deux types principaux de widgets :

Exemple de StatefulWidget

Un widget qui affiche du texte statique.

// Importation du package Flutter qui contient les widgets nécessaires pour créer une interface utilisateur
import 'package:flutter/material.dart';

// Fonction principale de l'application Flutter, c'est le point d'entrée de l'application
void main() {
  // La fonction runApp() démarre l'application en exécutant le widget MyApp..
  runApp(MyApp());
}
 
// Création de la classe MyApp, un StatefulWidget, ce qui signifie que cet écran peut avoir un état qui change
class MyApp extends StatefulWidget {
  
  // Cette méthode crée l'état associé au StatefulWidget
  
  _MyAppState createState() => _MyAppState();
}

// Classe représentant l'état de MyApp, c'est ici que nous allons gérer les changements d'état
class _MyAppState extends State<MyApp> {
  
  // Déclaration d'une variable entière _counter pour stocker la valeur du compteur, initialisée à 0
  int _counter = 0;

  // Fonction qui permet d'incrémenter la valeur de _counter et de rafraîchir l'interface utilisateur
  void _incrementCounter() {
    // La méthode setState() informe Flutter que l'interface doit être mise à jour
    setState(() {
      _counter++; // Incrémente la valeur du compteur
    });
  }

  // Méthode build qui construit l'interface utilisateur
  
  Widget build(BuildContext context) {
    // Retourne un MaterialApp pour définir l'application avec une structure en Material Design
    return MaterialApp(
      // Scaffold fournit une structure de base pour la page avec une appBar et un body
      home: Scaffold(
        // Barre d'application en haut avec un titre
        appBar: AppBar(title: Text('StatefulWidget Example')),
        
        // Contenu principal de la page
        body: Center(
          // Utilisation d'un widget Column pour organiser les widgets verticalement
          child: Column(
            // Alignement des widgets au centre de l'axe vertical
            mainAxisAlignment: MainAxisAlignment.center,
            children: <Widget>[
              // Texte qui affiche la valeur actuelle du compteur
              Text('Counter: $_counter'),
              
              // Bouton qui, lorsqu'il est pressé, appelle la fonction _incrementCounter pour augmenter le compteur
              ElevatedButton(
                // La fonction onPressed définit l'action lorsque le bouton est pressé
                onPressed: _incrementCounter,
                // Le texte affiché sur le bouton
                child: Text('Increment'),
              ),
            ],
          ),
        ),
      ),
    );
  }
}
image

Exemple de StatelessWidget

Un widget qui affiche du texte statique.

// Importation du package Flutter qui contient tout ce qui est nécessaire pour créer une interface utilisateur
import 'package:flutter/material.dart';

// Fonction principale de l'application Flutter, c'est le point d'entrée de l'application
void main() {
  // La fonction runApp() lance l'application en exécutant le widget MyApp
  runApp(MyApp());
}

// Définition de la classe MyApp qui hérite de StatelessWidget, ce qui signifie que l'interface utilisateur ne changera pas (pas d'état mutable)
class MyApp extends StatelessWidget {
  
  // Le constructeur build est appelé pour créer l'interface utilisateur
  
  Widget build(BuildContext context) {
    
    // Retourne un MaterialApp, qui est un widget Flutter pour les applications utilisant le design Material (style Android)
    return MaterialApp(
      
      // La propriété home définit l'interface principale de l'application (la page d'accueil)
      home: Scaffold(
        
        // La propriété appBar permet d'afficher une barre d'application en haut de l'écran
        appBar: AppBar(
          // Titre de la barre d'application
          title: Text('Mon Application Flutter'),
        ),
        
        // La propriété body définit le contenu principal de la page
        body: Center(
          // Affichage d'un texte au centre de la page
          child: Text('Hello, Flutter!'),
        ),
      ),
    );
  }
}
image

3. Organisation de l'interface : Les Layouts

Les layouts dans Flutter permettent d'organiser les widgets à l'écran. Il existe plusieurs types de widgets pour les layouts, mais les plus courants sont :

Exemple : Utilisation de Row et Column

image

4. Gestion de l'état avec Provider

La gestion de l'état est important dans une application Flutter. Provider est l'un des packages les plus utilisés pour simplifier cette gestion.

Installation de Provider

On ajoute la dépendance suivante dans le fichier pubspec.yaml :


dependencies: 

  provider: ^6.1.2  

la derniere version (6.1.2) est sortie il y a 7 mois.

Exemple d'utilisation de Provider

Voici comment utiliser Provider pour gérer un compteur :

image

5. Navigation dans Flutter

Flutter permet de gérer facilement la navigation entre différentes pages avec le widget Navigator.

Exemple de navigation entre deux pages

image image

6. Appels HTTP et interactions avec une API

Flutter peut facilement faire des appels réseau avec le package http. Cela est utile pour interagir avec des API externes et récupérer des données.

Exemple de requête HTTP

image

Horodatage

Date Heures passées Indications
Lundi 30/09 2h00 Début des recherches et installations nécessaires
Samedi & Dimanche 05-06/10 4h00 [Cours / Tuto] Apprendre à coder pour les vrais débutants avec Dart et Flutter sur YouTube
Jeudi 10/10 3h00 Approfondissement de mes recherches sur le sujet
Samedi 12/10 1h00 Restitution des idées

Conclusion

Flutter est une solution pour le développement d'applications multiplateformes. Si on maitrise les concepts de base et en approfondissant un peu des sujets comme la gestion de l'état avec Provider, la navigation, et les appels réseau, on sera capable de créer des applications modernes.

Sources :