Google publie Flutter 3.7 et évoque l'avenir du framework de développement d'applications
cette version améliore le support de Material You, les performances et la gestion de la mémoire
Google a annoncé mercredi la disponibilité générale de Flutter 3.7 lors de Flutter Forward, un événement destiné aux développeurs. L'entreprise a profité de l'occasion pour évoquer l'avenir de son framework de développement d'applications multiplateformes. Après des débuts modestes sur Android et iOS, Flutter peut maintenant vous aider à à créer des applications pour les mobiles, les ordinateurs de bureau, le Web et bien plus encore, le tout à partir d'une seule base de code Dart. Cette nouvelle version de Flutter prend en charge davantage de widgets et de menus Material You (Material3), corrige quelques bogues et améliore les performances.
Le SDK Flutter a atteint son jalon 1.0 le 4 décembre 2018. Selon Tim Sneath, qui dirige la gestion des produits Dart et Flutter, a déclaré qu'en mai 2022, il y avait 500 000 applications construites à l'aide de Flutter, soit deux fois plus qu'un an auparavant. Lors de l'événement de mercredi, qui s'est tenu à Nairobi, au Kenya, Sneath a déclaré que ce nombre est désormais passé à 700 000. Et le nombre de paquets disponibles via pub.dev a dépassé les 32 000, contre 23 000 en mai dernier. Google estime que Flutter a attiré 5 millions de développeurs et selon GitHub, il est l'un des trois principaux projets open source en fonction du nombre de contributeurs.
Quand d'autres mesurent de telles choses, Flutter semble toujours être plutôt populaire. Selon les analystes, Flutter pourrait le devenir davantage, car le SDK s'étend à de nouvelles plateformes matérielles telles que RISC-V et ARM64 pour Windows et s'attaque aux problèmes de performance, ce qui le rend mieux adapté aux jeux et à d'autres applications exigeantes en matière de calcul. Enfin, il apprend à s'adapter au Web et à d'autres langages de programmation. La version 3.7 de Flutter améliore davantage le framework avec l'ajout de nouvelles fonctionnalités remarquables. Voici ci-dessous les points forts de Flutter 3.7 :
Prise en charge améliorée de Material 3
La prise en charge de Material 3 a été considérablement améliorée dans la version 3.7 avec la migration des widgets suivants :
- Badge
- Barre d'application inférieure
- Boutons pleins et tons pleins
- SegmentedButton
- Case à cocher
- Séparateur
- Menus
- DropdownMenu
- Tiroir et tiroir de navigation
- Indicateur de progression
- Boutons radio
- Slider
- SnackBar
- TabBar
- Champs de texte et InputDecorator
- Bannière
Pour utiliser ces nouvelles fonctionnalités, il suffit d'activer l'indicateur useMaterial3 dans le widget ThemeData de votre application. Selon l'équipe, pour tirer pleinement parti du support de Material3, vous aurez besoin d'un schéma de couleurs M3 complet. Vous pouvez fournir le vôtre, utiliser le nouvel outil de création de thèmes ou Flutter peut en générer un pour vous à partir d'une seule couleur de base en utilisant le paramètre colorSchemeSeed du constructeur de ThemeData.
Barres de menu et menus en cascade
Flutter peut désormais créer des barres de menu et des menus contextuels en cascade. Pour macOS, créez une barre de menu à l'aide du widget PlatformMenuBar, qui définit les barres de menu natives de la plateforme dont le rendu est assuré par macOS et non Flutter. Et, pour toutes les plateformes, vous pouvez définir un menu Material Design qui fournit des barres de menu en cascade (MenuBar), ou des menus en cascade autonomes déclenchés par un autre élément de l'interface utilisateur (MenuAnchor).
Ces menus sont entièrement personnalisables, et les éléments de menu peuvent être des widgets personnalisés, ou vous pouvez utiliser les nouveaux widgets d'éléments de menu (MenuItemButton, SubmenuButton).
Aperçu du moteur de rendu Impeller
L'équipe annonce que le nouveau moteur de rendu Impeller est prêt à être testé sur iOS dans le canal stable. « Nous pensons que les performances d'Impeller atteindront ou dépasseront celles du moteur de rendu Skia pour la plupart des applications, et en ce qui concerne la fidélité, Impeller implémente tout sauf un petit nombre de cas particuliers rarement utilisés. Nous prévoyons de faire d'Impeller le moteur de rendu par défaut sur iOS dans une prochaine version stable, alors continuez à envoyer vos commentaires sur Impeller sur GitHub », a déclaré l'équipe dans un billet de blogue sur les fonctionnalités de Flutter 3.7.
« Bien que nous soyons de plus en plus convaincus qu'Impeller sur iOS répondra aux besoins de rendu de presque toutes les applications Flutter existantes, il reste encore quelques lacunes dans la couverture des API. Le petit nombre de lacunes restantes est répertorié sur le wiki Flutter. Les utilisateurs peuvent également remarquer des différences visuelles mineures dans le rendu entre Skia et Impeller. Ces différences mineures peuvent être des bogues, alors n'hésitez pas à signaler les problèmes. Nos progrès sur Impeller ont été grandement accélérés par les contributions de la communauté », a-t-elle ajouté.
Validation de la version iOS
Lorsque vous lancez une application iOS, une liste de contrôle des paramètres à mettre à jour garantit que votre application est prête à être soumise à l'App Store. La commande flutter build ipa valide désormais certains de ces paramètres et vous informe si des modifications doivent être apportées à votre application avant sa sortie.
Mises à jour de DevTools
Cette version comporte plusieurs nouvelles fonctionnalités d'outils et des améliorations générales à tester. L'outil de débogage de la mémoire de DevTools a subi une refonte complète. Il existe trois nouveaux onglets de fonctionnalités, Profil, Trace et Diff, qui prennent en charge toutes les fonctionnalités de débogage de la mémoire précédemment prises en charge et en ajoutent d'autres pour faciliter le débogage. Selon l'équipe Flutter, parmi les nouvelles fonctionnalités, il y a la possibilité d'analyser l'allocation de mémoire actuelle de votre application par classe et par type de mémoire.
Cela permet également de rechercher les chemins de code qui allouent de la mémoire pour un ensemble de classes au moment de l'exécution, et de différencier les instantanés de mémoire pour comprendre la gestion de la mémoire entre deux points dans le temps. La page Performances comporte en outre quelques nouveautés notables. Un nouvel onglet Analyse de trame en haut de la page Performances fournit des informations sur la trame Flutter sélectionnée. Il peut s'agir de suggestions sur la façon de suivre plus en détail les parties coûteuses de la trame Flutter, ou d'avertissements sur les opérations coûteuses détectées dans la trame Flutter.
Selon l'équipe, ce ne sont que quelques points saillants, mais cette version contient plusieurs corrections de bogues et améliorations au-delà des fonctionnalités mentionnées ici, y compris des corrections de bogues importantes pour l'inspecteur, le profileur de réseau et le profileur de CPU.
Menus contextuels personnalisés
Vous pouvez désormais créer des menus contextuels personnalisés n'importe où dans une application Flutter. Vous pouvez également les utiliser pour personnaliser les menus contextuels intégrés. Par exemple, vous pouvez ajouter un bouton "Envoyer un e-mail" à la barre d'outils de sélection de texte par défaut qui s'affiche lorsque l'utilisateur a sélectionné une adresse e-mail. Voir le paramètre contextMenuBuilder, qui a été ajouté aux widgets existants qui affichent un menu contextuel par défaut, comme TextField. Vous pouvez renvoyer n'importe quel widget de contextMenuBuilder, y compris modifier le menu contextuel par défaut adapté à la plateforme.
Cette nouvelle fonctionnalité fonctionne également en dehors de la sélection de texte. Vous pouvez, par exemple, créer un widget "Image" qui affiche un bouton "Enregistrer" en cas de clic droit ou de pression longue. Utilisez ContextMenuController pour afficher le menu contextuel par défaut de la plateforme actuelle, ou un menu personnalisé, n'importe où dans votre application.
Améliorations du défilement
Plusieurs mises à jour relatives au défilement ont été intégrées à cette version : amélioration et raffinement des interactions avec le trackpad, nouveaux widgets tels que Scrollbars et DraggableScrollableSheet, et amélioration de la gestion de la sélection de texte dans les contextes de défilement. En particulier, les applications macOS bénéficieront désormais d'une plus grande fidélité grâce à l'ajout d'une nouvelle physique de défilement correspondant à celle de la plateforme de bureau. Les nouveaux widgets AnimatedGrid et SliverAnimatedGrid animent les éléments ajoutés (ou retirés) d'une liste.
Enfin, l'équipe a corrigé une régression dans le constructeur de plusieurs widgets de défilement, comme [CListView[/C]. Lors de la migration NNBD du framework Flutter, itemBuilder, qui permet aux utilisateurs de fournir des widgets à la demande, a été migré vers IndexedWidgetBuilder. Cela signifiait que itemBuilder ne pouvait plus retourner null, ce qui (dans le passé) pouvait être utilisé pour indiquer que la fin de la liste avait été atteinte. Cette fonctionnalité a été restaurée avec NullableIndexedWidgetBuilder.
Suppression de macOS 10.11 à 10.13
Comme annoncé précédemment, Flutter ne prend plus en charge les versions 10.11 et 10.12 de macOS. Depuis cette annonce, une analyse plus approfondie a révélé que la suppression de la prise en charge de la version 10.13 aurait un impact supplémentaire limité et aiderait l'équipe à simplifier considérablement la base de code. Cela signifie que les applications construites avec les SDK stables de Flutter à partir de cette version ne fonctionneront plus sur ces versions, et que la version minimale de macOS prise en charge par Flutter passe à 10.14 Mojave.
En conséquence, étant donné que toutes les versions d'iOS et de macOS prises en charge par Flutter incluent le support de Metal, le backend OpenGL a été supprimé des embedders iOS et macOS. La suppression de ces backends a réduit la taille compressée du moteur Flutter d'environ 100 Ko.
Autres changements et améliorations
Google travaille également sur de nouveaux moyens d'aider les applications Flutter à s'intégrer au système d'exploitation ou à la plateforme sous-jacente. Pour Android et iOS, l'équipe Flutter réinvente la façon dont les plugins natifs de la plateforme sont créés. Au lieu de devoir utiliser des platform channels pour transmettre des messages au code natif, les développeurs Flutter pour iOS pourront bientôt utiliser le FFI de Dart pour appeler directement le code Objective-C et Swift. De même, Flutter sur Android pourra utiliser JNI pour appeler du code Kotlin.
Pour les applications Web Flutter, une nouvelle bibliothèque JavaScript permet d'appeler facilement le code Dart de votre application à partir du code JavaScript de la page externe. De même, vous pouvez désormais intégrer une vue Flutter à une page par le biais d'un div HTML standard. Vous pouvez voir ces deux éléments dans une page de démonstration amusante. Ailleurs dans l'actualité de Flutter, Google a fait des progrès dans la compilation des applications Dart avec WebAssembly. Selon l'équipe, ce n'était pas une mince affaire, car WebAssembly ne prenait pas initialement en charge les langages avec ramasse-miette, comme Dart.
À terme, cela devrait se traduire par une amélioration significative des performances de Flutter sur le web. En plus de la compilation vers WebAssembly, l'équipe Dart a également commencé à offrir un support complet de l'architecture RISC-V, avec pour objectif ultime de faire fonctionner les applications Flutter sur RISC-V. Une autre annonce importante faite mercredi est que Google poursuit son projet de publier la version 3.0 du langage de programmation Dart sur lequel sont construites les applications Flutter. La version alpha de Dart 3 est déjà disponible pour les premiers tests, l'accent étant mis sur l'exigence d'une sécurité solide et nulle.
Source : Flutter 3.7
Et vous ?
Que pensez-vous des nouveautés introduites par Flutter 3.7 ?
Voir aussi
Flutter 3 de Google ajoute la prise en charge des applications de bureau macOS et Linux, le framework s'accompagne d'intégrations plus approfondies avec Firebase
Ubuntu fait de Flutter un « choix par défaut » pour les futures applications de bureau, Canonical veut parier sur le futur du framework libre et open source de développement d'UI proposé par Google
Flutter de Google : 2 millions de développeurs, hausse de l'utilisation par les entreprises, et révélation d'un nouveau processus de mise à jour du framework
Partager