‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌   ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌   ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌   ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌   ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌   ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌   ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌   ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌   ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌   ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌   ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌   ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌   ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌   ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌   ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌   ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ 

Numéro 35 (09 septembre 2021)

Ouvrir la newsletter dans le navigateur

arrow

Nouvelle version stable !

Exceptionnellement un numéro spécial de la newsletter est disponible pour vous annoncer la double sortie de Flutter 2.5.0, ainsi que Dart 2.14.

Cette édition consistera à évoquer les principales nouveautés, avant de rentrer plus dans les détails dans l’édition #36 de lundi matin. Si vous avez suivi nos précédentes éditions, vous noterez qu’une grande partie des nouveautés était déjà connue.

Bonne lecture et à vos flutter upgrade !
Image titre

Comme pour chaque nouvelle version, Google a donné quelques chiffres, toujours très impressionnants. On peut notamment citer :

  • 4 600 tickets (issues) ont été clos sur GitHub
  • 3 932 Pull Requests ont été intégrées au code de Flutter
  • 100% des 250 packages les plus utilisés sont compatibles null safety
Image titre

Avant de regarder en détails les nouveautés du framework, intéressons-nous à Dart. Tout comme la précédente itération, les changements sont assez légers (tout au moins ne nécessitant pas une migration telle que le null-safety). Mais côté "déceptions", aucun mot sur le très attendu static meta-programming.

Image titre

L'opérateur >> sert aujourd'hui à effectuer un décalage arithmétique. Sa déclinaison avec non plus, deux, mais trois chevrons, effectue un décalage logique non signé.

Image titre

Déjà évoquées dans notre précédent numéro flag_fr, les règles utilisées par l'analyzer seront plus cohérentes, car Google en interne, l'équipe Dart et l'équipe Flutter n'avaient pas accordé leurs violons. Désormais, les éléments vont être plus clairs avec deux packages lints flag_fr et flutter_lints flag_fr.

Pour appliquer ces nouvelles règles, il suffit de modifier le fichier analysis_options.yaml.

Vous avez un projet "pur" Dart ? Utilisez soit package:lints/core.yaml (qui est aussi utilisé sur Pub.dev), soit package:lints/recommended.yaml (l'équivalent de core et de quelques règles supplémentaires).

Si à l'inverse vous avez un projet Flutter, c'est assez simple: utilisez la version dédiée : package:flutter_lints/flutter.yaml. A noter que vous pouvez les utiliser même sans Dart 2.14.

Image titre

Aujourd'hui lorsque vous publiez sur Pub, l'intégralité des fichiers est mise en ligne (sauf ceux du .gitignore). Mais l'utilisation du .gitignore n'est pas forcément appropriée, car certains fichiers peuvent être nécessaires sur Git et pas sur Pub.

Désormais tout comme les .gitignore, nous allons pouvoir écrire un .pubignore. Une bonne nouvelle ne vient jamais seule : le format de ce fichier est identique à celui des .gitignore.

Image titre

Un titre que nous mettons de nombreuses fois dans nos changelogs, mais côté Flutter, ce n'est pas du blabla. Qui dit performances, dit bien évidemment iOS et ses animations souvent décriées au lancement. Selon l'article officiel, des améliorations ont à nouveau été apportées dans ce domaine, mais d'autres restent encore à réaliser.

Plus "palpable" cette fois-ci, Flutter va désormais avantager l'interface graphique et réduire la priorité autour des événements asynchrones (ex : une requête réseau, l'accès au système de fichiers…). Une très bonne nouvelle, car il n'y a rien à changer dans nos codes.

Côté mémoire, Dart dispose d'un Garbage Collector pour nous faciliter la tâche. Il pouvait toutefois arriver que de simples images puissent générer une forte quantité d'appels du GC. L'exemple cité est un GIF, où le nombre de passages du GC est passé de plus de 400 à seulement 4. Cela permettra d'avoir une interface graphique bien plus fluide.

Des optimisations ont aussi été livrées sur les Platform Channels, la manière de communiquer votre code Dart/Flutter vers les plateformes sous-jacentes (Android et iOS). Un article est d'ailleurs dédié à ce sujet, pour celles et ceux qui veulent en savoir plus. Là aussi, rien à changer de votre côté.

Image titre

Sur les applications Android, vous avez la possibilité d'indiquer si vous souhaitez voir la barre de statut (en haut de l'écran), la barre de navigation (si disponible et en bas), voire aucune des deux. Désormais, en appelant SystemChrome.setEnabledSystemUIMode, vous pourrez facilement les gérer dynamiquement et même être notifié des changements grâce à SystemChrome.setSystemUIChangeCallback

Image titre

La troisième itération de Material Design n'est toujours pas en version stable, mais son implémentation côté Flutter a bien avancé (FloatingActionButton…).

En parallèle, le ScaffoldMessenger qui servait essentiellement à afficher des Snackbar (sur le bas de l'écran), va aussi pouvoir afficher des MaterialBanner : des messages fixes sur le haut de l'écran.

Image titre

L'équipe Flutter continue d'améliorer le support des claviers physiques. Cette version tourne principalement autour des raccourcis. Il est ainsi possible de modifier les raccourcis par défaut via le Widget Shortcuts ou d'avoir la liste des raccourcis déjà implémentés par plateforme.

Image titre

Attention la commande classique vous donnera toujours le bon vieux compteur. Si vous souhaitez avoir le nouveau template nommé sketelon, il faut saisir la commande flutter create -t skeleton.

Concrètement, il s'agit d'une mini-application composée d'une liste et d'un écran de détails. Outre les Widgets, ce template bénéficie d'une traduction, d'une architecture basée sur ChangeNotifier et d'un changement dynamique du thème.

Image titre

Eh oui, un outil Flutter a bien un nom français 🇫🇷 ! Nous vous en avions d'ailleurs parlé dans l'édition 24 de la newsletter flag_fr. Concrètement, lorsque vous souhaitez utiliser des Platform Channels, les étapes d'envoi et de réception de messages (ou plutôt de sérialisation/désérialisation) se font à la main… et peuvent être une véritable source d'erreurs. L'idée de pigeon flag_fr est de rendre justement ce passage d'argument type-safe, afin d'éviter de potentiels bugs. N'hésitez pas à (re)lire l'article expliquant comment l'utiliser.

Image titre

Le support des processeurs des Mac ARM continue (mais n'est pas totalement terminé). Dans Flutter 2.5.0, si vous développez avec le simulateur iOS, Rosetta n'est plus utilisé, pour ainsi profiter à 100% des performances.

Image titre

Pour rappel, pour télécharger cette version, il vous suffit de lancer : flutter pub global deactivate devtools, puis flutter pub global activate devtools.

Côté Widget Inspector, vous noterez l'apparition d'icônes pour mieux distinguer chaque type de Widget, une console avec un évaluateur 🙌 ou encore la possibilité de voir les propriétés en passant sa souris au-dessus.

Sur le CPU Profiler, vous pouvez filtrer le code natif, le code des bibliothèques Dart et celles de Flutter. Vous noterez aussi que différentes couleurs sont utilisées, une amélioration également valable pour les autres onglets.

Sur la partie Network, on peut désormais voir le contenu des requêtes pour celles envoyées en POST.

Image titre

L'idée de cette édition "spéciale" était de vous résumer les principales annonces. Mais, je vous invite à lire les différents articles d'annonce sur Medium :

Votre avis sur ce numéro
😍😆🙄😡👍👎