Site icon Blog Zenika

Retours sur la FlutterCon Europe 2024

Photo du CityCube, le bâtiment où a eu lieu la FlutterCon à Berlin

Du 3 au 5 juillet 2024 s’est tenue la 2ème édition de la FlutterCon europe. Cette conférence a lieu à Berlin, au même moment et dans le même bâtiment que la DroidCon. 

L’événement a rassemblé plus de 2000 participants sur 3 jours, avec 4 tracks de talks permettant à une centaine de speakers de présenter 90 sujets.

Les conférences sont toutes en anglais puisque les speakers et participants viennent de toute l’Europe, voire d’autres continents.

Ces trois jours ont été l’occasion pour moi d’apprendre et découvrir de nombreuses choses. Je les ai présentées lors d’un meetup Flutter à Nantes dont la vidéo est disponible sur Youtube (les slides sont ici). 

Je vais maintenant essayer de résumer tout cela dans cet article.

La navigation avec go_router_builder

Pour gérer la navigation sur une application Flutter, plusieurs librairies existent : Navigator (une version light de navigation), go_router, auto_route… Etant habituée à utiliser go_router, j’ai été surprise d’apprendre que go_router_builder existait. Cette librairie a été présentée au cours de 2 présentations, un format “quicky” présenté par Matej Rešetár de Leancode et un talk plus long par Max Weber, qui ont permis de découvrir cet outil.

Son principe est assez simple : go_router_builder se branche au dessus de go_router (il faut donc importer les 2 dépendances dans le projet). Il est ensuite utilisé pour générer le code nécessaire au routing de l’application, grâce à diverses annotations. L’illustration suivante présente le code de routing d’une application, avec et sans go_router_builder.

Code avec go_router
Code avec go_router et go_router_builder

Il évite ainsi du code redondant, notamment lors de passage d’arguments à des routes, et apporte une écriture simplifiée pour gérer les changements de route. Cependant, comme tout outil de génération de code, il nécessite une phase d’apprentissage légèrement plus longue puisqu’il faut apprendre à maîtriser ses annotations pour pouvoir s’en servir. 

Comment gérer les fichiers générés ? Les conseils d’Anna Leushchenko

Comme vu précédemment, un projet Flutter peut rapidement contenir plusieurs fichiers de code généré, comme c’est le cas pour de nombreuses technologies. Le fait de ne pas analyser ces fichiers est assez courant, puisque les erreurs de lint relevées sur du code généré ne pourront par définition pas être corrigées, à moins de mettre à jour la librairie en charge de la génération du code. Cependant, Anna – experte Dart et Flutter chez Google – avait quelques conseils à prodiguer qui peuvent malgré tout surprendre. 

J’ai par exemple été étonnée par sa suggestion de committer ces fichiers générés. Cela apporte de nombreux avantages, comme un gain de temps lors changements de branches dans le projet : plutôt que de récupérer toutes les dépendances ET générer le code associé, il n’y aura alors besoin que de récupérer les dépendances. Grâce à cela on gagne donc du temps du côté des développeurs, mais également sur la CI qui ne devra plus générer ces fichiers pour exécuter ses différentes vérifications, puisqu’ils font déjà partie intégrante du code.

Néanmoins cette pratique peut aussi amener son lot de complications, comme par exemple des conflits sur ces fichiers générés ou des décalages entre le fichier d’origine et le code généré, puisqu’il faudra penser à lancer manuellement la génération de code lors de chaque modification sur un fichier qui comporte du code à générer.

Anna nous a également conseillé de fixer les versions des dépendances dans nos applications et librairies, afin d’éviter d’avoir des décalages selon l’environnement de développement, à cause d’une dépendance qui ne serait pas résolue de la même manière. Ce fameux effet du “je ne comprends pas pourquoi ça ne fonctionne pas chez toi : ça fonctionne bien chez moi pourtant !”. Elle conseille donc d’avoir un fichier de dépendances qui ressemble à cela (sans “^ » devant les numéros de version).

Dans la même thématique, elle a rejoint les conseils fournis par l’équipe Flutter : committer les fichiers pubspec.lock des applications, et non des librairies, là encore pour maîtriser au mieux les versions des dépendances utilisées dans le projet.

Comment faire pour que mon application soit agréable visuellement ?

D’après Maxime Rougieux et Thomas Coumeau, développeurs Flutter chez Theodo apps, un bon MVP (Minimal Viable Product) doit comprendre :

Ces chiffres représentent un MVP idéal. La pratique est souvent différente puisqu’il faut prendre en compte le budget du projet, le temps qui peut être passé… Ils ont plutôt représenté la réalité avec ce schéma :

On y retrouve : 

  • Un besoin de fonctionnalités métier : nécessaires au fonctionnement de l’application, d’un point de vue business
  • Une petite part d’expérience : l’application doit être fonctionnelle
  • Une grande contrainte portée par ce qui peut être fait dans le temps imparti, qui dépend de la taille de l’équipe et du budget alloué au projet

Cet “effet waouh” a complètement disparu de ce schéma, alors que certaines animations peuvent être implémentées facilement. Cela peut prendre peu de temps aux équipes et apporter une expérience satisfaisante lors de l’utilisation de l’application.

Lors de leur présentation, Maxime et Thomas nous ont parlé de différents widget Flutter permettant de faire des animations simples comme : 

  • l’AnimatedContainer, utilisé pour faire des petites animations sur un widget en modifiant sa taille ou sa couleur dynamiquement (pour plus d’infos n’hésitez pas à consulter la documentation Flutter : https://api.flutter.dev/flutter/widgets/AnimatedContainer-class.html)
  • le Hero, qui là encore est assez simple à mettre en place et a également l’avantage d’être positif en terme d’accessibilité puisqu’au lieu d’avoir un widget qui disparait et réapparait à un autre endroit, il va se déplacer vers sa nouvelle position sur la page ce qui permet d’être un peu moins perdu lors d’un changement de contexte. Là encore la documentation Flutter sur le sujet est très complète : https://docs.flutter.dev/ui/animations/hero-animations
Illustration tirée de l’article Flutter Hero Animation Unmasked – Part 1/2

Les nouveautés graphiques apportées par Flutter 3.24 

En terme d’animation, Flutter 3.24 arrive également avec de nombreux changements. Cette version est sortie début août 2024, vous la connaissez donc peut-être déjà, mais elle n’était pas encore sortie début juillet. La FlutterCon a donc été l’occasion pour l’équipe de Material de présenter ses nouveautés. 

Les principaux ajouts en terme de graphisme concernent : 

Quelques sujets en vrac

Les trois jours de conférences ont été très dense, il me semble impossible de résumer tout ce que j’y ai vu dans un article (ou alors il va vite devenir indigeste). Voici donc quelques recommandations de sujets que j’ai trouvés particulièrement intéressants, si vous souhaitez les approfondir : 

Image générée par Roaa Khaddam durant son talk

Tous les talks que j’ai cités précédemment, et beaucoup d’autres, sont disponibles sur le site de la droidcon.

Conclusion

Je reviens ravie de cette expérience à Berlin. Je tiens à remercier les organisateurs de la FlutterCon et DroidCon pour leur travail et leur investissement pour rendre ces 3 jours si mémorables. Merci également à Zenika de m’avoir permis d’y assister. 

Auteur/Autrice

Quitter la version mobile