Configuration Flutter et Structure de Projet
Développer avec Flutter
Section titled “Développer avec Flutter”Flutter est présenté comme une librairie de création “pseudo-déclarative” d’UI réactive multi-plateforme, en partie inspirée de React.
Flutter est donc un environnement de développement multi-paradigme :
- composition
- fonctionnelle
- event-driven
- déclaratif
- impératif
Utiliser Flutter CLI
Section titled “Utiliser Flutter CLI”Documentation officielle Flutter CLI
Flutter peut être utilisé via lignes de commande pour l’ensemble du cycle de développement.
Configuration
Section titled “Configuration”Vérifiez votre installation Flutter :
flutter doctorCette commande vérifie votre environnement et affiche un rapport des outils installés.
Création de projet
Section titled “Création de projet”Créer un nouveau projet Flutter :
flutter create .Plusieurs options sont disponibles :
--platforms: Spécifier les plateformes cibles--org: Définir l’organisation (ex: com.example)--ios-language: Langage pour iOS (Swift/Objective-C)--android-language: Langage pour Android (Kotlin/Java)--template: Type de projet (app, module, package, plugin)
Commandes Flutter essentielles
Section titled “Commandes Flutter essentielles”# Gestion des dépendancesflutter pub getflutter pub outdatedflutter pub upgrade
# Développementflutter run -d deviceflutter testflutter buildflutter drive
# Outilsflutter formatflutter analyzeflutter doctor
# Extrasflutter emulatorsflutter gen-l10nflutter bash-completionCréation de projet avec un IDE
Section titled “Création de projet avec un IDE”Android Studio / IntelliJ
Section titled “Android Studio / IntelliJ”- Installer le plugin Flutter
- Configurer le chemin vers Flutter SDK
- Créer nouveau projet Flutter via l’assistant
VS Code
Section titled “VS Code”- Installer l’extension Flutter
- Utiliser la palette de commandes : “Flutter: New Project”
Structure de l’application
Section titled “Structure de l’application”Comme toutes les applications Dart, les applications Flutter ont un point d’entrée unique : la fonction main.
L’initialisation de l’application est lancée via la méthode runApp qui configure les couches nécessaires au fonctionnement d’une application Flutter Material.
import 'package:flutter/material.dart';
void main() => runApp(MaterialApp( home: Scaffold( body: Text('Hello world') )));MaterialApp Configuration
Section titled “MaterialApp Configuration”MaterialApp est le widget racine qui configure votre application Flutter avec Material Design.
Titre et titre généré
Section titled “Titre et titre généré”MaterialApp( title: 'Mon App Flutter', onGenerateTitle: (context) => 'Titre Localisé', // ...)Thèmes Material Design
Section titled “Thèmes Material Design”Configuration des thèmes clair et sombre :
MaterialApp( theme: ThemeData( primarySwatch: Colors.blue, brightness: Brightness.light, ), darkTheme: ThemeData( brightness: Brightness.dark, ), // Thèmes à contraste élevé highContrastTheme: ThemeData( brightness: Brightness.light, // Configuration contraste élevé ), highContrastDarkTheme: ThemeData( brightness: Brightness.dark, // Configuration contraste élevé sombre ),)Configuration du Navigator
Section titled “Configuration du Navigator”Le Navigator gère la navigation entre les écrans :
MaterialApp( home: HomeScreen(), // Écran d'accueil navigatorKey: GlobalKey<NavigatorState>(),
// Routes nommées routes: { '/': (context) => HomeScreen(), '/settings': (context) => SettingsScreen(), },
initialRoute: '/', onGenerateRoute: (settings) { // Génération dynamique de routes }, onGenerateInitialRoutes: (initialRoute) { // Routes initiales personnalisées }, onUnknownRoute: (settings) { // Gestion des routes inconnues return MaterialPageRoute( builder: (context) => NotFoundScreen(), ); },)Localisation
Section titled “Localisation”Configuration des langues supportées :
MaterialApp( locale: Locale('fr', 'FR'), supportedLocales: [ Locale('en', 'US'), Locale('fr', 'FR'), ], localizationsDelegates: [ GlobalMaterialLocalizations.delegate, GlobalWidgetsLocalizations.delegate, GlobalCupertinoLocalizations.delegate, ], localeResolutionCallback: (locale, supportedLocales) { // Résolution personnalisée de locale },)Options de debug
Section titled “Options de debug”MaterialApp( debugShowCheckedModeBanner: false, // Masquer le banner debug debugShowMaterialGrid: false, // Grille Material Design showPerformanceOverlay: false, // Overlay de performance showSemanticsDebugger: false, // Debugger d'accessibilité)Structure d’un écran avec Scaffold
Section titled “Structure d’un écran avec Scaffold”Le Scaffold fournit la structure de base d’un écran Material Design :
Scaffold( appBar: AppBar( title: Text('Mon Écran'), leading: IconButton( icon: Icon(Icons.menu), onPressed: () {}, ), actions: [ IconButton( icon: Icon(Icons.search), onPressed: () {}, ), ], ),
body: Center( child: Text('Contenu principal'), ),
floatingActionButton: FloatingActionButton( onPressed: () {}, child: Icon(Icons.add), ),
drawer: Drawer( child: ListView( children: [ DrawerHeader( decoration: BoxDecoration(color: Colors.blue), child: Text('Menu'), ), ListTile( title: Text('Accueil'), onTap: () {}, ), ], ), ),
bottomNavigationBar: BottomNavigationBar( items: [ BottomNavigationBarItem( icon: Icon(Icons.home), label: 'Accueil', ), BottomNavigationBarItem( icon: Icon(Icons.settings), label: 'Paramètres', ), ], ),)Project Structure Overview
Section titled “Project Structure Overview”Structure des dossiers
Section titled “Structure des dossiers”mon_app_flutter/├── android/ # Code natif Android├── ios/ # Code natif iOS├── lib/ # Code Dart principal│ ├── main.dart # Point d'entrée│ ├── models/ # Modèles de données│ ├── screens/ # Écrans de l'application│ ├── widgets/ # Widgets personnalisés│ └── services/ # Services (API, base de données)├── test/ # Tests unitaires├── assets/ # Ressources (images, polices)├── pubspec.yaml # Configuration des dépendances└── README.md # Documentation du projetFichier pubspec.yaml
Section titled “Fichier pubspec.yaml”Configuration principal du projet :
name: mon_app_flutterdescription: Description de mon application Flutterversion: 1.0.0+1
environment: sdk: '>=3.0.0 <4.0.0' flutter: ">=3.10.0"
dependencies: flutter: sdk: flutter cupertino_icons: ^1.0.2
dev_dependencies: flutter_test: sdk: flutter flutter_lints: ^2.0.0
flutter: uses-material-design: true
assets: - assets/images/ - assets/icons/
fonts: - family: CustomFont fonts: - asset: assets/fonts/CustomFont-Regular.ttf - asset: assets/fonts/CustomFont-Bold.ttf weight: 700Organisation du code
Section titled “Organisation du code”main.dart - Point d’entrée :
import 'package:flutter/material.dart';import 'screens/home_screen.dart';
void main() { runApp(MyApp());}
class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( title: 'Mon App Flutter', theme: ThemeData( primarySwatch: Colors.blue, ), home: HomeScreen(), ); }}Cette structure de base vous permet de démarrer efficacement le développement d’applications Flutter avec une architecture claire et maintenable.