Flutter Connection 2025 : Jamais deux sans trois

Bienvenue à bord de notre rétrospective exclusive de la Flutter Connection 2025 ! Si vous êtes un passionné de Flutter, un développeur curieux ou simplement quelqu'un qui s'intéresse aux dernières tendances du développement mobile, vous êtes au bon endroit. 

Dans cet article, nous allons plonger au cœur de cet événement majeur, en décortiquant les 12 présentations complètes en partageant avec vous les insights clés qui ont façonné cette édition. Attendez-vous à un voyage à travers des sujets variés, allant du développement full-stack avec Dart aux subtilités de l'accessibilité, en passant par l'intelligence artificielle et les techniques d'A/B testing.

From Flutter to Full-Stack: A Practical Guide to Full-stack Development

par Muhammed Salih Güler

Cette présentation explorait comment les développeurs Flutter peuvent étendre leurs compétences vers le développement full-stack en utilisant Dart également pour le backend. Le conférencier a présenté divers outils qui permettent de gérer les aspects complexes du backend comme la sécurité et la scalabilité, tout en soulignant l'avantage unique de pouvoir utiliser Dart pour les services backend.

Un point particulièrement intéressant abordé durant la présentation concernait le fameux partage de code entre le frontend et le backend, avec notamment la réutilisation des models. Salih a également couvert les modèles de conception d'API et les techniques de test applicables à l'ensemble de la stack technologique.

import 'dart:io';


import 'package:shelf/shelf.dart';
import 'package:shelf/shelf_io.dart';


Response bonjourParisHandler(Request request) =>
  Response.ok("Bonjour Paris!");


void main(List<dynamic> args) async {
    final ip = InternetAddress.anyIPv4;
    final port = 8080;
    final server = await serve(bonjourParisHandler, ip, port);
    print("Server listening on port ${server.port}");
}

Code pour ouvrir un serveur avec le package shelf

La seconde partie du talk était consacrée à une démonstration en live de différents frameworks Dart pour le backend. Parmi ceux mentionnés figuraient Shelf, Serverpod, Frog, Alfred et Vania. Le conférencier a terminé la présentation en écrivant du code, pour nous montrer la mise en place étape par étape de Shelf et Serverpod, dans une superbe démonstration.

Deep Dive into Semantics Widget

par Manuela Sakura Rommel

Manuela Sakura Rommel, développeuse Flutter indépendante et ambassadrice Women Techmakers est spécialisée dans l’accessibilité numérique. Manuela a mis en avant l’importance cruciale de l’intégration des widgets sémantiques dans Flutter pour améliorer l’expérience des utilisateurs, notamment ceux qui dépendent des lecteurs d’écran. 

Selon l’Organisation mondiale de la santé, environ 15 % de la population mondiale vit avec un handicap, soulignant ainsi la nécessité de concevoir des applications inclusives et accessibles à tous.

Manuela a expliqué que dans Flutter, l’interface utilisateur est construite sous forme d’un arbre de widgets (Widget Tree). Cependant, pour les technologies d’assistance, un arbre sémantique (Semantics Tree) est généré en éliminant les widgets non essentiels, tels que les paddings, afin de fournir une représentation plus pertinente de l’interface. Ce processus est essentiel pour que les lecteurs d’écran interprètent correctement l’application et offrent une expérience utilisateur optimale aux personnes ayant des déficiences visuelles. Le propriétaire des sémantiques (Semantics Owner) est responsable de la gestion de cet arbre sémantique, tandis que les liaisons sémantiques (Semantics Bindings) servent de pont entre Flutter et les plateformes natives, transmettant les informations d’accessibilité aux systèmes iOS (UIAccessibility), Android (AccessibilityNodeInfo) et Web.

Rappel de la relation entre les différents arbres composants de Flutter

Au cours de sa présentation, Manuela a présenté plusieurs widgets sémantiques clés dans Flutter, notamment le widget Semantics, qui permet d’annoter l’arbre des widgets avec des descriptions significatives pour les technologies d’assistance. Elle a également abordé le widget MergeSemantics, qui fusionne les sémantiques de plusieurs widgets en un seul nœud, utile pour les éléments complexes composés de plusieurs widgets, et le widget ExcludeSemantics, qui exclut un sous-arbre de widgets de l’arbre sémantique, idéal pour les éléments purement décoratifs. De plus, elle a souligné l’importance des widgets Semantics Container, ExplicitChildNodes et SemanticsLabel pour améliorer l’accessibilité des applications Flutter.

Manuela a également évoqué l’European Accessibility Act (EAA), qui impose des normes strictes en matière d’accessibilité numérique en Europe. Elle a souligné que l’intégration des widgets sémantiques dans Flutter est essentielle pour créer des applications conformes à ces normes et offrir une expérience utilisateur inclusive. En outre, elle a mentionné que pour les tests, Flutter offre la possibilité d’identifier des widgets spécifiques à l’aide de l’identifiant sémantique via find.bySemanticsLabel, facilitant ainsi la vérification de l’accessibilité des composants.

Sa présentation a fourni des informations précieuses sur la manière d’utiliser efficacement ces widgets pour améliorer l’expérience utilisateur pour tous, en mettant l’accent sur l’importance de considérer l’accessibilité dès le début du processus de développement.

Proximity Unlocked: Building Smart Location-Based Matching Apps in Flutter

par Simon Eckerstorfer

La présentation de Simon Eckerstorfer nous présente comment gérer la géolocalisation en arrière-plan de manière fiable et efficace dans les applications mobiles. Il a commencé par présenter des outils et techniques avec Flutter, en mettant l'accent sur l'équilibre entre la fréquence des mises à jour et la consommation de la batterie. Pour une localisation sur un secteur précis, l'utilisation de balises BLE (Bluetooth Low Energy)pu peut être une solution mais sur un trajet en voiture sur plusieurs heures le choix se tourne plus sur le package : flutter_background_geolocation. Le package a plusieurs avantages comme : un suivi de localisation avancé et une géoclôturation mais possède des points négatifs comme l’impact sur la batterie, le coût d’utilisation pour une utilisation commerciale et une certaine complexité d’intégration.

Image de géolocalisation du package flutter_background_geolocation

Simon souligne l'importance de minimiser les requêtes HTTP et pour une localisation précise. Ils ont également abordé la gestion des données géospatiales avec des types de données natifs comme PostGIS pour un stockage efficace dans une base de données. Le mock de localisation a été mentionné avec des outils comme Lockito pour Android et RocketSim pour iOS, nécessitant une certaine familiarité pour une utilisation optimale.

Pour le déploiement sur les stores, il est important d'avoir une bonne raison pour intégrer la localisation en arrière-plan, car elle doit être une fonctionnalité principale de l'application. Vous risquez de vous faire voir refuser votre soumission sur le store.

Getting started with Slivers

par Jaime Blasco

Jaime Blasco, dans son talk "Getting Started with Slivers", nous a embarqués dans une exploration détaillée des Slivers, ces widgets essentiels pour construire des interfaces scrollables flexibles et performantes. Son débit rapide n'a laissé que peu de répit, mais il a couvert un large spectre d'outils et de techniques pour mieux maîtriser le CustomScrollView.

Il a notamment abordé SliverToBoxAdapter, couramment utilisé pour insérer des widgets classiques dans une structure de slivers, en tenant compte des contraintes spécifiques. Ensuite, il a présenté les conteneurs SliverAppBar et SliverResizingHeader, qui permettent d’adapter les effets visuels en fonction des besoins d’animation et de mise en page.

Les SliverList et SliverGrid ont été au cœur des explications sur l’optimisation des performances selon la nature des éléments affichés : taille fixe, nombre d’éléments par colonne, etc. Côté personnalisation, il a introduit les DecorationSlivers, SliverPadding et SliverOpacity pour affiner l’apparence et l’espacement des composants.

Slivers, Demystified
Or, how to do fancy scrolling techniques in your mobile app with Flutter

Enfin, il a mis en avant l’équivalence des Column et Row en version sliver avec SliverMainAxisGroup et SliverCrossAxisGroup, qui permettent d’organiser plusieurs widgets efficacement. Il a conclu sur les contraintes spécifiques que l’on peut gérer avec SliverLayoutBuilder et SliverTableView, offrant une flexibilité supplémentaire pour concevoir des interfaces performantes et adaptées aux besoins de l’application.

Un talk intense, mais qui donne les clés pour mieux maîtriser les slivers et construire des UIs scrollables complexes avec Flutter ! 

AI-Powered Visual Dev: A New Workflow for Flutter Devs

par Michael McRoskey

L’intelligence artificielle redéfinit la manière dont les développeurs conçoivent et construisent des applications. Cette année, Michael McRoskey a présenté cette évolution en retraçant l’histoire des outils de développement, du binaire aux langages bas niveau, puis aux frameworks, IDE et maintenant au “visual development” piloté par l’IA. Il a illustré comment cette approche universelle et cross-plateforme transforme le rôle du développeur fullstack, notamment avec des outils comme FlutterFlow.

Les différents types de développement de code

Un des points clés abordés était l’auto-amélioration de FlutterFlow grâce à l’IA. L’outil est désormais utilisé pour optimiser son propre développement, avec des fonctionnalités comme un modal de création de projet amélioré, un onboarding repensé et des réglages avancés du canvas. Ce nouveau workflow, combinant conception IA, exportation en CLI et intégration au code existant, permet de fluidifier et d’accélérer le cycle de développement. Une démonstration en direct a illustré cette progression : une capture d’écran transformée en code FlutterFlow, puis en Dart, avant d’être intégrée en tant que package dans une application Flutter.

L’essor fulgurant de l’IA dans la génération de code a conduit McRoskey à repenser des idées autrefois jugées irréalisables. Depuis 2021, où l’IA ne permettait que des générateurs de code rudimentaires, les avancées récentes ont changé la donne. Il a insisté sur l’importance de concevoir des solutions agnostiques aux modèles d’IA pour éviter une dépendance excessive à une technologie spécifique. Avec 2025 en ligne de mire, il a évoqué Dreamflow, un projet visant à générer des applications complètes via IA, en s’appuyant sur des Domain-Specific Languages (DSL).

Différences entre DSL et langage naturel

Aspect DSLs Langages naturel
Champ d'application et objectif Étroit et spécifique à un domaine Polyvalent et applicable à grande échelle
Niveau d'abstraction Haut niveau, spécifique à un domaine Bas niveau, polyvalent
Facilité d'utilisation Convivialité pour les experts du domaine Courbe d'apprentissage potentiellement plus raide
Intégration Intégration étroite avec des domaines spécifiques Polyvalent, mais peut nécessiter une adaptation

Cependant, cette approche soulève de nouveaux défis en matière de maintenance, débogage et gestion des hallucinations de l’IA, nécessitant un retour à Dart pour structurer et fiabiliser les réponses de l’IA.

Pour garantir la qualité du code généré, McRoskey a mis en avant l’utilisation de “system prompts” spécifiques, comme l’application systématique du nouveau thème, l’usage de const et la capture des exceptions dans un Future. Ces directives permettent d’orienter l’IA vers des standards de développement cohérents et d’améliorer la collaboration entre l’humain et la machine.

Si des défis subsistent, l’IA s’impose déjà comme un acteur clé du développement logiciel. L’ère du développement assisté par intelligence artificielle est bien là, promettant d’accélérer la création d’applications tout en redéfinissant le rôle du développeur.

Let’s Talk About Memory Leaks In Dart And Flutter

par Majid Hajian

Majid Hajian, avec son humour et son énergie communicative, a captivé son audience avec une méthode surprenante impliquant ses chaussettes (je vous laisse découvrir comment !). Dans Let’s Talk About Memory Leaks In Dart And Flutter, il a abordé un sujet crucial pour les développeurs Flutter : les fuites de mémoire et leur impact sur la performance des applications.

Différence entre memory bloat et memoy leak

Il a commencé par poser les bases de la gestion de la mémoire en distinguant deux phénomènes : les memory leaks, où la mémoire est consommée involontairement sans être libérée, et les memory bloats, où une grande quantité de mémoire est utilisée intentionnellement, par exemple pour mettre en cache des images ou charger un JSON volumineux. Le garbage collector de Dart fonctionne selon le principe du mark and sweep, identifiant les objets toujours référencés et éliminant ceux qui ne le sont plus. Cependant, certains objets restent en mémoire plus longtemps que prévu, soit parce qu’ils doivent être explicitement nettoyés (disposables), soit parce qu’ils sont utilisés de manière intentionnellement risquée.

Fonctionnement du garbage collector de Dart

L'une des clés pour éviter les fuites est de bien gérer la durée de vie des objets. Il faut éviter de passer des objets éphémères à des lambdas qui risquent de les garder en mémoire trop longtemps. Nettoyer les objets disposables est une bonne pratique bien connue, mais il ne faut pas oublier de le faire dans didUpdateDependencies, notamment en supprimant les anciens listeners. Lorsqu'on manipule de gros objets de manière continue, l'utilisation de WeakReferences avec un éventuel Finalizer peut être utile, bien que cela demande une grande prudence.

Il a également évoqué l'optimisation de l'utilisation des Strings et des buffers, l'intérêt des constantes pour réduire l'empreinte mémoire et l'utilisation des Slivers pour améliorer le rendu des interfaces complexes. Enfin, il a recommandé des packages comme leak_tracker et les linters pour détecter les fuites et éviter qu'elles ne se glissent dans le code. Plus globalement, il a insisté sur l'importance d'utiliser les bons outils au bon moment tout au long du cycle de développement d'une application.

En conclusion, ce talk était un condensé de bonnes pratiques et d'outils concrets pour mieux gérer la mémoire en Flutter. Une présentation technique, enrichissante et inspirante, qui donne envie de plonger dans son livre “Flutter Engineering".

Let’s Talk About Memory Leaks In Dart And Flutter | DCM - Code Quality Tool for Flutter Developers
Memory leaks can be annoying as they are hard to spot and recreate compared to syntax errors or logic bugs that usually show up in the development phase of a program or app build out. When it comes to memory leaks, in Flutter applications, getting more complex with the addition of layers of widgets and controllers combined with listeners over time may result in performance issues or unexpected crashes for users after prolonged use.

A Journey to Continuous Delivery with Flutter

par François Nollen, Adrien Body

Pour le talk suivant, François Nollen et Adrien Body nous ont présenté leur expérience avec la mise en œuvre de la Continuous Delivery (CD) pour l’application mobile Flutter la plus utilisée d’Europe! 

Dans un premier temps, ils ont souligné l'importance de la CD pour déployer des modifications en production de manière rapide, sûre et durable. Selon le rapport State of DevOps et les métriques DORA, les entreprises performantes déploient plusieurs fois par jour, avec la capacité de revenir en arrière en moins d'une heure en cas de problème.

Métriques DORA

Performance level Change lead time Deployment frequency Change fail rate Failed deployment recovery time
Elite Less than one day On demand (multiple deploys per day) 5% Less than one hour
High Between one day and one week Between once per day and once per week 20% Less than one day
Medium Between one week and one month Between once per week and once per month 10% Less than one day
Low Between one month and six months Between once per month and once every six months 40% Between one week and one month

Ensuite, nous avons découvert les défis liés au respect des règles et politiques des stores, tout en gérant des stratégies de déploiement efficaces. Les intervenants ont partagé leur expérience avec une application utilisée par des millions d'utilisateurs Android et iOS, mise à jour quotidiennement. Ils ont discuté des outils et techniques utilisés, y compris les Feature Flags, les versions bêta, Shorebird, et LaunchDarkly, pour accélérer l'innovation tout en assurant des déploiements sécurisés.

Enfin, ils ont mis en lumière les défis rencontrés et les résultats obtenus, offrant des insights précieux pour les équipes cherchant à améliorer leurs pratiques de déploiement continu. L'objectif est d'innover plus rapidement et de déployer en toute sécurité, tout en respectant les contraintes imposées par les plateformes de distribution.

From Fear to Air: Embracing Over-the-Air App Updates

par Mangirdas Kazlauskas

Lors de cette présentation, plusieurs outils et approches innovants ont été présentés pour moderniser la façon dont les applications sont mises à jour et personnalisées après leur publication.

L’un des principaux enjeux abordés est la complexité et la lourdeur du processus de validation d’une application sur les stores, que ce soit pour une application Android ou iOS. Pour y remédier, des solutions Over-The-Air (OTA) comme Shorebird permettent de déployer des mises à jour de code sans avoir à repasser par la case publication sur les stores. Cela offre une plus grande réactivité, notamment pour corriger rapidement des bugs ou tester de nouvelles fonctionnalités.

Workflow de développement proposé par Shorebird

ShoreBird n’est pas le seul outil basé sur ce principe. En effet, il existe une multitude de solutions reprenant le principe de mise à jour dynamique du code. L’intervenante nous a notamment parlé de :

  • Crowdin, pour gérer les traductions d’une application en direct
  • RevenueCat, pour gérer les abonnements in-app
  • Firebase Remote Config, pour mettre à jour certains comportements d’une application

Dans un autre registre, on peut aussi évoquer l’existence des Remote Flutter Widgets. Ce sont des widgets que l’on peut définir côté serveur et qui sont ensuite calculés au moment de leur utilisation côté application. Ils nous offrent ainsi une plus grande flexibilité dans la construction de nos interfaces.

Enfin, à l’ère de l’IA, cette présentation s’est achevée avec l’idée qu’on pourra très probablement mixer toutes ces solutions de mises à jour d’application mobile avec de l’IA. En effet, on pourrait très bien imaginer utiliser une IA pour générer une UI adaptée au public d’une application et la faire évoluer en fonction de son utilisation grâce à des outils OTA.

Bringing Flutter to the Terminal

par Aloïs Deniel

Aloïs Deniel, développeur chez Clickup, nous a présenté FTUI (Flutter Terminal UI), un projet personnel visant à dessiner une vue Flutter dans un terminal. Le principe d’un TUI (Terminal User Interface) est simple : remplir l’écran de caractères colorés pour simuler une interface, à la manière d’un GUI, mais en mode texte.

Liste des solutions de gestion terminal par différents frameworks

Plusieurs frameworks proposent déjà ce genre d’approche dans d'autres langages — comme Bubbletea en Go, Ratatui en Rust ou encore Textual en Python. Jusqu’ici, Dart ne disposait d’aucune solution équivalente. FTUI vient donc combler ce vide, en posant les bases d’une interface terminal native pour l’écosystème Flutter.

Listen up! Mastering A/B Testing and Feedback Techniques in Your Mobile Apps

par Alicja Ogonowska

Lors de cette conférence dédiée à la notion d’A/B testing, plusieurs approches et outils ont été mis en avant pour optimiser l'expérience utilisateur et améliorer les taux de conversion d’une application mobile.

L’A/B testing consiste à comparer deux versions d'une application, la version A (originale) et la version B (modifiée), afin de déterminer laquelle offre les meilleurs résultats en fonction d'objectifs prédéfinis. Ce processus implique la définition d'une hypothèse, la création de variantes, puis l'analyse des performances respectives. Il est important de noter que les tests ne se limitent pas aux changements d'interface utilisateur, mais qu’ils peuvent également concerner d'autres aspects fonctionnels d’une application.

Image pour décrire l'A/B testing

L'utilisation de Remote Config permet de gérer ces variantes sans passer par une mise à jour complète de l'application. Les valeurs de configuration sont récupérées au démarrage de l'application, ce qui facilite le déploiement des tests et l'analyse des résultats via des outils d'analytique intégrés. Il ne faut surtout pas négliger l’étape d’analyse des résultats puisque c’est cette étape qui permet d’interpréter les données issues des tests et d’en sortir une conclusion pertinente sur ce qu’on voulait tester.

Une fois les résultats obtenus, il est possible de désigner une variante gagnante et de la déployer à l'ensemble des utilisateurs sans avoir à publier une nouvelle version de l'application. Cette flexibilité permet d'adapter rapidement l'application en fonction des préférences et comportements des utilisateurs, contribuant ainsi à une meilleure expérience utilisateur et à une augmentation des taux de conversion.

Il convient de mentionner que la mise en place de tels tests demande un investissement en termes de travail et de temps. De plus, des différences peuvent exister entre les plateformes Android et iOS, nécessitant parfois la création d'expériences distinctes pour chaque système d'exploitation. Il est également important de prendre en compte que la propagation des modifications via Remote Config peut prendre un certain temps, ce qui doit être intégré dans la planification des tests.

En conclusion, l’A/B testing offre une approche efficace pour tester des hypothèses et déployer des améliorations de manière continue au sein d’une application mobile. Bien que cela nécessite une planification et une analyse rigoureuses, les bénéfices en termes d'adaptation aux besoins des utilisateurs et d'amélioration des performances de l'application sont significatifs.

Saving Time and CO₂ - A Story About a Custom Design System

par Anton Borries

L’optimisation du design et du développement ne se limite pas à une question d’esthétique : c’est aussi un levier de performance et d’impact environnemental. Lors de Flutter Connection, Anton Borries a présenté une exploration de la manière dont un système de design bien pensé peut améliorer la productivité des équipes tout en réduisant l’empreinte carbone des applications. Il a mis en avant l’importance d’une approche harmonisée, où scalabilité, rapidité et cohérence profitent aux développeurs, aux designers et à l’ensemble des équipes. Selon lui, la clé réside dans une collaboration efficace, car en design comme en développement, “une bonne collaboration est une bonne communication”.

L’un des piliers de cette approche repose sur l’Atomic Design, une méthodologie où les interfaces sont construites en partant des éléments les plus simples, les atomes, pour aboutir à des structures plus complexes comme les molécules et les organismes. Cette décomposition permet de créer des interfaces modulaires et réutilisables, garantissant une meilleure cohérence et facilitant les évolutions du produit. Dans ce cadre, les barres de navigation comme l’AppBar ou la TopBar deviennent des éléments structurants, à la fois flexibles et standardisés.

Slide représentant l'atomic design

L’intégration des concepts de design system dans Flutter repose également sur l’utilisation de tokens de design via Figma, qui sont ensuite transformés en extensions de thème. Cette approche permet une personnalisation avancée tout en conservant une structure claire et maintenable. Anton a illustré ce processus par un graphe de collaboration, mettant en évidence comment designers et développeurs peuvent travailler ensemble pour éviter les incohérences et améliorer la fluidité du workflow.

Workflow de l'intervention du designd dans un développement

En conclusion, Anton a ouvert la discussion sur des aspects spécifiques comme la sélection de thèmes, la gestion des notifications et l’intégration d’un système d’enqueue controller pour améliorer l’onboarding des utilisateurs. Ces éléments démontrent que la mise en place d’un design system ne se limite pas à la création de composants : elle implique une réflexion plus large sur l’expérience utilisateur et les processus de développement.

Simplify App Development by Building Widgets in Isolation

par Lucas Josefiak

Pour le dernier talk de la journée, Lucas Josefiak, créateur de `widgetbookù  nous présente son outil. Dans un premier temps, Lucas a mis en avant l'importance de ne pas dépendre d'un provider spécifique ou d'un data model spécifique lors du développement de widgets. Le but est d'isoler complètement les widgets des données, permettant ainsi une meilleure flexibilité et de pouvoir ré-utiliser les widgets partout dans l’application.

Ensuite, nous avons découvert Widgetbook, un plugin Flutter permettant de créer un package de composants UI distinct dans notre répertoire git. Ce package est conçu pour faciliter le test et la visualisation des widgets sur différents appareils. Pour son utilisation il suffit simplement d’ajouter l’annotation au-dessus de notre widget.

@widgetbook.UseCase(name: 'Default', type: CoolButton)

Lucas a également introduit les knobs, des outils dynamiques permettant de modifier les paramètres des widgets directement depuis l'interface de Widgetbook, permettant ainsi de tester différents états de notre widget. Par exemple, nous allons pouvoir renseigner des paramètres comme un titre ou un compteur au widget.De même pour les addons, qui permettent aux développeurs de tester les widgets sur divers dispositifs et thèmes, garantissant une expérience utilisateur optimale sur une variété de plateformes.

Enfin nous avons eu le droit à une présentation de widgetbook cloud qui peut se connecter à notre répertoire Git directement ainsi qu'à une CI/CD. Cela permet de voir visuellement les modifications sur les widgets de notre application sur un commit.

Quelques mots de fin

En guise de conclusion, il est clair que la Flutter Connection 2025 a été une mine d'informations et d'inspirations pour tous les participants. La richesse des sujets explorés, allant du développement full-stack à l'accessibilité, en passant par l'IA et l'A/B testing, a offert un panorama complet des enjeux et des opportunités du développement Flutter actuel et futur.

Ces moments d'échange et de partage sont essentiels pour la communauté Flutter. Ils permettent non seulement de se tenir informé des dernières avancées technologiques, mais aussi de tisser des liens, de s'inspirer mutuellement et de faire grandir collectivement cet écosystème dynamique. En tant que développeurs Flutter, ces événements sont une occasion unique de se ressourcer, de se challenger et de repartir avec de nouvelles idées et une motivation renouvelée.

Nous espérons que ce résumé complet vous aura donné un aperçu de la richesse de la Flutter Connection 2025 et vous aura peut-être donné envie de participer à la prochaine édition. Ensemble, continuons à explorer les possibilités infinies de Flutter et à faire rayonner cette communauté passionnante.

À l'année prochaine !

L'équipe Ippon Flutter vous remercie de la lecture !