Flutter

Toolkit UI Google pour apps cross-platform - une base de code, hot reload, performance native

TL;DR

Quoi : Toolkit UI de Google pour créer des applications compilées nativement.

Pourquoi : Une seule base de code pour iOS/Android/Web/Desktop, hot reload, belles UIs, excellentes performances.

Quick Start

Installation : Suivez flutter.dev/docs/get-started/install

Vérifier :

flutter doctor

Créer une nouvelle app :

flutter create my_app
cd my_app
flutter run

Cheatsheet

CommandeDescription
flutter create nameCréer un nouveau projet
flutter runExécuter sur appareil/émulateur
flutter build apkConstruire APK Android
flutter build iosConstruire app iOS
flutter pub getObtenir les dépendances
flutter pub add pkgAjouter un package
flutter testExécuter les tests

Gotchas

Basic widget

import 'package:flutter/material.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: const Text('Mon App')),
        body: const Center(child: Text('Bonjour, Flutter!')),
      ),
    );
  }
}

Stateful widget

class Counter extends StatefulWidget {
  @override
  _CounterState createState() => _CounterState();
}

class _CounterState extends State<Counter> {
  int _count = 0;

  @override
  Widget build(BuildContext context) {
    return Column(
      children: [
        Text('Compteur: $_count'),
        ElevatedButton(
          onPressed: () => setState(() => _count++),
          child: const Text('Incrémenter'),
        ),
      ],
    );
  }
}

Common widgets

// Layout
Column(children: [...])
Row(children: [...])
Container(padding: ..., child: ...)
ListView.builder(itemBuilder: ...)

// Entrée
TextField(controller: ..., onChanged: ...)
ElevatedButton(onPressed: ..., child: ...)

// Affichage
Text('Bonjour')
Image.network('url')
Icon(Icons.star)
// Push
Navigator.push(context, MaterialPageRoute(builder: (context) => NextPage()));

// Pop
Navigator.pop(context);

// Routes nommées
Navigator.pushNamed(context, '/details');

Next Steps