Flutter 3.19, Dart 3.3 : qu’impliquent ces mises à jour pour le développement de vos projets mobiles ?
L'utilisation de Flutter pour le développement d'applications mobiles hybrides, capables de fonctionner à la fois sur Android, iOS et le web avec un seul code source (voir notre article sur le sujet), est de plus en plus populaire parmi les développeurs. Cela s’explique en partie par la dynamique proactive de la communauté Flutter qui s'efforce de rester à jour sur les normes et préférences des experts du marché. Pour rappel, Dart est le langage de programmation utilisé pour écrire le code d'une application développée via l’outil (ou framework) Flutter.
Récemment, plusieurs nouveautés ont été dévoilées, à la fois pour Dart et pour Flutter. S’il ne s’agit pas de changements majeurs, des évolutions très importantes sur la roadmap 2024 sont à noter. Metaprogramming (Dart), uniformisation des Widgets (Flutter) avec la proposition de la norme “Black Canvas”... Nos développeurs font le point sur ces nouvelles possibilités et sur ce qui attend vos projets dans les prochains mois !
Dart 3.3
Quoi de neuf dans la nouvelle version ?
Chez USERADGENTS, nous retiendrons trois choses :
- Types d'extensions : l’introduction de la possibilité de créer de nouveaux types basés sur des types existants, différents des extensions de méthodes classiques.
- Interopérabilité avec JavaScript : Dart 3.3 permet une interaction plus fluide avec le code JavaScript grâce à une API bien typée, facilitant l'accès et l'utilisation des fonctionnalités JS directement depuis Dart.
- Nouvelles règles de vérification de code “Lint”, depuis l’IDE :
- Désormais, il y a une obligation d'avoir des liens HTTPS dans le pubspec.yaml forçant ainsi l’usage d’appels web encryptés.
- Affichage d’un avertissement en cas d'utilisation d'un mauvais type de variable au sein d’une collection.
Qu’est-ce qui est prévu dans la roadmap 2024 ?
- Macros ou static metaprogramming (voir notre article sur le sujet) : Les “macros” envisagées pour Dart pourraient permettre de générer automatiquement du code à la compilation, éliminant le besoin d'outils externes comme build_runner pour les annotations. À ce stade, il s’agit d’une proposition en cours de validation, qui est déjà disponible dans la branche expérimentale 3.4.0-77.0.dev.
La génération automatique de classes lors de la compilation crée un surplus de fichiers difficilement lisibles, rendant le débogage complexe et fastidieux pour les développeurs. Le metaprogramming statique promet de rationaliser ce processus en automatisant la génération de code de manière plus intégrée et transparente, facilitant ainsi le débogage et la maintenance du code pour les développeurs.
Prigent Roudaut, Head Of Mobile
- Inclusion du concept “Primary Constructor” : cela permet de déclarer un constructeur et des variables d'instance de classe de manière concise dans une seule ligne de code et d’améliorer la sémantique d’import de fichiers en la rendant plus simple et concise.
Exemple :
Plutôt que d’écrire cela…
class Person { const Person({ required this.firstName, required this.age }); final String firstName; final int age; }
Nous aurons les déclarations implicites de nos variables de classe firstName et age directement dans la déclaration de la classe, en une seule ligne :
class Person (String firstName, int age);
Flutter 3.19
Quoi de neuf dans la nouvelle version ?
Peu de nouveautés à retenir selon nous, si ce n’est :
- Breaking Changes : plusieurs changements mineurs nécessitant des ajustements sont à noter, comme des renommages et modifications sur les API de clavier.
- Améliorations spécifiques :
- L’AnimationStyle pour personnaliser les animations par widget.
- Le mode "Adaptive" pour les switches.
- L’écoute des changements d'état sur les TextFields et TextFormFields.
- La correction de bugs et optimisations diverses.
- L'arrivée du support ARM64 sur Windows impliquant la fin du support pour Windows 7 & 8 et iOS 11.
Qu’est-ce qui est prévu dans la roadmap 2024 ?
Globalement, la roadmap 2024 de Flutter contient surtout des éléments non traités en 2023. Cela indique que l'équipe Flutter a rencontré des retards dans ses prévisions pour diverses raisons. Par conséquent, il convient de ne pas considérer les annonces de l'équipe concernant les développements futurs comme des garanties absolues.
Prigent Roudaut, Head Of Mobile
Le développement continu de Material 3 et de Cupertino se poursuit et la transition vers Material 3 devrait donc s’opérer, tout en discutant de l'avenir du Material 2. Pour l’instant, il n’y a pas vraiment de décision prise sur son obsolescence.
De nombreux projets utilisent Material 2 et la migration peut devenir fastidieuse en Material 3. Même si aucune date butoir d’obsolescence de Material 2 n’a encore été définie par Flutter, il est important de prévoir cette mise à jour dans vos projets.
Maxence Venel, Développeur Flutter
En 2024, le projet d’importation de la proposition « Black Canvas » d'Hixie devrait arriver à son terme. Le but : faciliter la création de collections de widgets personnalisés avec un template unifié et cohérent.
La création de widgets personnalisés arrive systématiquement sur un projet. L’intégration d’une “norme“ de fabrication permettra de garder une cohérence uniforme sur tous les Widgets et une facilitation de partage de ceux-ci entre différents projets.
Julien Pipard, Lead Développeur Flutter
Notons aussi quelques améliorations sur les plateformes, comme :
- Le support d'Android 15 et Kotlin pour les fichiers Gradle.
- Le passage aux Platform Channels améliorées avec JNIGen.
- Pour iOS, les dépendances passeront par Swift Package Manager et non plus CocoaPod.
Les développeurs iOS apprécieront l’arrêt de CocoaPods au profit de SPM pour un meilleur confort de gestion des versions des dépendances utilisées sur un projet XCode.
Cyrille Legrand, Lead Développeur iOS
Côté Web et Desktop, Flutter annonce un focus sur l'amélioration des performances et du support, y compris sur WebAssembly et le SEO.
À noter enfin que le Framework Gemini a été mis à disposition en version bêta google_generative_ai | Dart package, permettant l’usage de l’IA générative de Google sous forme de texte. Le blog Flutter traite ce sujet dans l’article Harness the Gemini API in your Dart and Flutter Apps que l’on vous laissera découvrir.
En conclusion, bien que les mises à jour de Dart 3.3 et Flutter 3.19 n'introduisent pas de changements révolutionnaires dans la façon de développer des applications, elles apportent des améliorations significatives alignées sur les évolutions des systèmes d'exploitation iOS et Android.
Leurs roadmaps pour 2024 suivent cette logique d'évolution plutôt que de révolution, en mettant l'accent sur l'amélioration de l'expérience de développement et l'efficacité. Le métaprogrammation statique va rendre le débogage plus facile et rapide en limitant l'usage d'outils externes. De même, le projet Black Canvas simplifie la création de widgets uniques, rendant la personnalisation de l'interface utilisateur plus uniforme et facile à réutiliser pour les développeurs.
Ces initiatives, telles que l'adoption de Swift Package Manager pour iOS, reflètent une attention particulière au confort des développeurs, à une gestion des dépendances plus aisée et à une meilleure performance, soulignant une volonté d'optimiser le temps de travail et d'améliorer la qualité globale des projets Flutter.
Une question sur les nouvelles versions de Flutter et/ou Dart ? Un besoin d’accompagnement sur leur prise en main sur vos projets ? Contactez-nous !




