Mis à jour le

Phone
Intermediaire 10 questions • Dart/Flutter

Questions d'entretien Flutter

Preparez votre entretien Flutter avec des questions sur les widgets, la gestion d'état et le rendu.

Questions d'entretien Flutter

1. Comment fonctionne le rendu dans Flutter ?

Flutter n'utilise pas les composants natifs de la plateforme. Il dispose de son propre moteur de rendu (Skia/Impeller) qui dessine chaque pixel a l'écran. L'architecture en trois couches : Framework (Dart, widgets, Material/Cupertino), Engine (C++, Skia, gestion des textes, compilation Dart), Embedder (spécifique à la plateforme). Cette approche garantit une cohérence visuelle parfaite entre iOS et Android et des performances proches du natif (60/120 fps).

2. Quelle est la différence entre StatelessWidget et StatefulWidget ?

Un StatelessWidget est un widget immutable qui ne change jamais après sa construction. Il est reconstruit uniquement quand ses paramètres changent depuis le parent. Un StatefulWidget possède un objet State mutable qui persiste entre les reconstructions. Appelez setState() pour notifier Flutter qu'un rebuild est nécessaire. Préférez StatelessWidget quand possible pour de meilleures performances.

3. Expliquez le widget tree, élément tree et render tree.

Flutter utilise trois arbres : le Widget tree (description déclarative de l'UI, immutable, reconstruit fréquemment), l'Élément tree (instanciation des widgets, gere le cycle de vie, persiste entre les rebuilds), et le Render tree (calcule le layout et peint les pixels). Quand setState() est appele, Flutter reconstruit le widget tree, compare avec l'élément tree (reconciliation), et ne met à jour que les render objects affectes. C'est similaire au virtual DOM de React.

4. Quelles sont les principales solutions de gestion d'état en Flutter ?

setState : pour l'état local simple. Provider : le plus populaire, injection de dépendances réactive (ChangeNotifier + Consumer). Riverpod : évolution de Provider, compile-time safe, plus flexible. BLoC (Business Logic Component) : separe la logique avec des Streams, patron événementiel. GetX : tout-en-un (état, navigation, DI), simple mais opinionne. Redux : pour les développeurs venant du web. Choix recommande : Provider pour les projets simples, Riverpod ou BLoC pour les projets complexes.

5. Comment fonctionne la navigation dans Flutter ?

Deux approches : Navigator 1.0 (impératif) avec push/pop sur une pile de routes (Navigator.push, Navigator.pop). Navigator 2.0 / Router (déclaratif) pour les applications complexes (deep linking, web). Packages populaires : go_router (simplifie le Navigator 2.0 avec une syntaxe déclarative), auto_route (genere le code de routing). La navigation gere le back stack, les arguments entre routes, les animations de transition et les deep links.

6. Comment appeler du code natif depuis Flutter ?

Platform Channels : le mécanisme officiel. MethodChannel pour les appels de méthodes, EventChannel pour les streams. Le code Dart envoie un message au code natif (Swift/Kotlin) via un canal nomme, et reçoit une réponse. FFI (Foreign Function Interface) : pour appeler du code C/C++ directement depuis Dart, plus performant. Pigeon : générateur de code qui cree les interfaces type-safe entre Dart et le code natif automatiquement.

7. Comment optimiser les performances d'une application Flutter ?

Techniques : utilisez const constructors pour les widgets statiques (evite les rebuilds inutiles), évitez les rebuilds excessifs (granularisez les widgets, utilisez Consumer/Selector avec Provider), utilisez ListView.builder pour les longues listes (lazy loading), cachez les images avec CachedNetworkImage, utilisez le DevTools Performance view pour identifier les jank frames, et préférez Impeller (nouveau moteur de rendu) sur iOS.

8. Expliquez le pattern BLoC et son implémentation.

Le pattern BLoC (Business Logic Component) separe la logique métier de l'UI en utilisant des Streams. Le BLoC reçoit des Events (actions de l'utilisateur), traite la logique et emet des States (états de l'UI). Avec le package flutter_bloc : définissez un Event (sealed class), un State (sealed class), et un Bloc qui mappe les events aux states via on. L'UI utilise BlocBuilder pour reagir aux changements d'état et BlocProvider pour l'injection.

9. Comment gérer la persistance des données dans Flutter ?

shared_preferences : paires cle-valeur simples (préférences). sqflite : SQLite pour les données structurees. Hive : base de données NoSQL légère et rapide (boites de données typées). Drift (anciennement Moor) : ORM SQLite réactif avec des requêtes type-safe. Isar : base de données NoSQL hautes performances. Firebase Firestore : base de données cloud temps réel. Pour le stockage securise : flutter_secure_storage (Keychain iOS, Keystore Android).

10. Comment tester une application Flutter ?

Trois niveaux de tests : Tests unitaires (test de logique pure, BLoCs, repositories), Widget tests (testent un widget en isolation avec testWidgets(), pumpWidget(), find.byType(), expect()), Intégration tests (testent l'application complete sur un appareil/emulateur). Utilisez mockito pour les mocks, bloc_test pour tester les BLoCs (blocTest()), et golden tests pour la comparaison visuelle pixel-par-pixel des widgets.

Besoin d'aide pour préparer vos entretiens ?

Decrivez votre profil pour des conseils de preparation personnalises.

Recevoir des conseils

Questions fréquentes

Flutter ou React Native, lequel choisir ?
Flutter pour des performances proches du natif, une coherence visuelle parfaite et un ecosysteme Google. React Native si votre equipe maitrise React/JavaScript et que vous voulez un ecosysteme plus large. Flutter gagne en popularite mais React Native a plus d'offres d'emploi en France.
Flutter est-il adapte pour le web et le desktop ?
Flutter Web est utilisable pour les applications web (pas pour les sites SEO). Flutter Desktop (Windows, macOS, Linux) est stable mais l'ecosysteme de packages desktop est encore en maturation. Le mobile reste le point fort de Flutter.

Pages liées

Chaque semaine, le meilleur de la tech française

Tendances, salaires, outils et opportunités — directement dans votre boîte mail.

Gratuit. Desabonnement en un clic. Pas de spam.