Tout comme Flutter, Dart reçoit régulièrement des mises à jour pour lui ajouter des fonctionnalités. Alors que la version stable est actuellement la 2.14.4 , la liste des nouveautés de Dart 2.15 est déjà disponible. En voici une première salve :
Les constructeurs tear-offs Imaginons que vous ayez la classe suivante : class A { String a; A(this.x); } Pour créer un nouvel objet, vous devez logiquement indiquer A("Une valeur"). Grâce aux tear-offs, vous pouvez désormais écrire : List<String> list = ["1", "2", "3"]; for (String e in list.map(A.new)) {}
Le A.new équivaut à appeler le constructeur, mais sans avoir à écrire le callback (String val) => A(val). A noter que pour les constructeurs nommés, vous n'avez qu'à changer le new par le bon nom.
Pubspec Cela fait plusieurs fois que l'on en parle, mais les "pub" auto-hébergés seront mieux gérés et la syntaxe dans le pubspec.yaml sera allégée. Il faudra simplement rajouter une ligne hosted sur chaque dépendance : dependencies: colorizer: hosted: 'https://custom-pub-server.com' version: ^1.2.3
Lors de la publication d'une bibliothèque sur Pub, des vérifications seront faites pour s'assurer que des clés privées ne seront pas envoyées.
Pieds et mains liés La Corée du Sud a toujours été une exception concernant les paiements à l'intérieur des applications. La restriction consistant à utiliser exclusivement les solutions de Google et Apple n'était en effet pas appliquée. En octobre, le pays "du matin calme" devait toutefois rentrer dans le rang et suivre le reste du monde. Les députés sud coréens ne l'ont pas entendu de cette oreille et ont fait en sorte fin août que les géants ne puissent jamais contraindre les développeurs tiers de telle manière.
Et ils ne sont pas contents Depuis la semaine dernière, le projet de loi est définitivement adopté et mis en place, forçant Google et Apple à rapidement réagir. Du côté de chez Google, on indique fournir des détails dans les semaines à venir, là où Apple s'indigne en invoquant des contrôles parentaux moins efficaces.
Google donne déjà un exemple Dans un billet de blog, Google réaffirme tous les avantages de ses solutions (Play Points, cartes cadeaux, le nombre d'utilisateurs…) mais donne, de manière laconique, une capture d'écran en expliquant : "En réponse à la législation, les développeurs pourront maintenant ajouter un autre système de facturation, en plus du système du Google Play, pour les utilisateurs de mobiles et tablettes en Corée du Sud. Lors du paiement, les utilisateurs pourront choisir le système de facturation de leur choix".
Le reste de l'actu en bref'
📅 Nous sommes partis sur un rythme d'un meetup toutes les deux semaines et le prochain événement devrait avoir lieu le 15 octobre. Ce sera le retour du fameux format "App Clinic", n'hésitez donc pas à proposer votre application !
⏫ Le plugin Flutter pour VS Code a été mis à jour vers la version 3.28 (changelog). Outre des nouvelles fonctionnalités plus ou moins visibles, on note surtout le support du Hot Reload pour les projets en "pur Dart".
✨ Du côté des Pull Requests Flutter, on peut noter :
Sur les applications macOS, le template par défaut va désormais avoir un menu "Aide" pour être en accord avec les applications natives classiques (PR #92946)
L'ajout d'une classe AppModel est en cours pour facilement propager des données sous la forme clé/valeur aux widgets enfant. Il n'est pas destiné à remplacer des packages comme Provider, mais plutôt fournir des données à des Widgets personnalisés qui ont besoin de données qui peuvent être fournies ultérieurement (PR #92297)
🏥 L'avantage de l'opensource est de pouvoir faire éclore un écosystème rapidement, mais cela devient problématique si les projets ne sont plus maintenus. C'est le cas de la bibliothèque qui gère le Bluetooth en Flutter (flutter_blue) qui ne donne plus signe de vie depuis le mois de mars. La solution semble pour le moment de se tourner vers ce fork.
🔥 Firebase App Distribution permet de partager facilement des applications Android et iOS auprès de testeurs. Une API va être prochainement mise à disposition pour intégrer cette brique dans votre workflow de déploiement. La documentation est disponible ici.
👖 Jacquard est un système de Google permettant de "connecter" vos vêtements (jeans, sacs…). Il permet de détecter des interactions et mouvements (ex : appuyer deux fois sur sa veste met en pause la musique). Le système était jusqu'alors fermé, mais depuis quelques jours un SDK public est disponible pour Android et iOS. Si vous voulez tester, vous pouvez prendre le tag Adidas qui ne coûte que quelques euros, car le sac Saint Laurent n'est pas des plus accessibles !
🤖 Après Android, Chrome, Firebase… Google prévoit un événement dédié au Machine Learning dès demain ! Un peu organisé au dernier moment…
🍾 Sortons le champagne, le très célèbre éditeur Vim vient de fêter ses 20 ans la semaine dernière !
Le saviez-vous ?
Lorsqu'on évoque le Japon 🗼, on pense tout de suite aux technologies de pointe, mais saviez-vous que l'administration de Tokyo utilisait encore des disquettes ? Oui, vous avez bien entendu, des disquettes 3,5 pouces en 2021 !
Dans un article de Nikkei (un grand quotidien économique), on apprend ainsi que certains arrondissements de la ville ont, soit commencé, soit prévoient de mettre en œuvre la transition vers des systèmes plus modernes.
Ce format pourtant ancien se démarque par sa fiabilité : "[il n'a] presque jamais cassé, ni perdu de données". Mais Sony, l'un des fournisseurs de ces disquettes, a stoppé la production il y a une dizaine d'années. Et pire la Mizuho Bank a indiqué que depuis 2019, elle allait commencer à facturer 50 000 yens (~ 379€) par mois pour l'utilisation de supports de stockage physiques, y compris les disquettes.
Au rythme actuel, l'arrondissement de Chiyoda Ward devrait terminer sa migration en 2026 !
Contrairement au paradigme du "Flutter dessine tout à l'écran", la WebView fait office d'exception, puisque c'est le composant graphique d'Android ou iOS qui s'affiche à la place. Cela ne change pas grand-chose au niveau de la gestion des Widgets, mais montre à quel point cet élément est riche en fonctionnalités. Dans cet article vous apprendrez autant les méthodes "élémentaires", que les fonctionnalités plus avancées.
L'art génératif consiste à concevoir des œuvres graphiques à l'aide d'algorithmes. Sachant que Flutter est plutôt connu pour sa facilité d'utilisation pour des non-développeurs, qu'en est-il de cet art ? C'est la question que s'est posée James Porter et qui a obtenu d'excellents résultats. Il a toutefois créé une bibliothèque pour vous faciliter la tâche, si vous souhaitez devenir demain le Picasso de Flutter 🎨 !
Lorsqu'il s'agit de sauvegarder des informations, les bases de données sont légion en Flutter. Qu'il s'agisse de SQL ou no SQL, ce n'est pas le choix qui manque avec ObjectBox, sqflite, Hive, Firebase… Les développeurs de la première solution ont réalisé un benchmark qui démontre qu'ils arrivent en tête. Alors pourquoi ne pas tester leur solution ?
Le Widget CustomPaint permet de dessiner à la main. Selon l'élément à reproduire, cela peut toutefois vite devenir complexe de tracer des cercles, traits… C'est pour cela, que je présentais il y a quelques éditions de la newsletter de cela, l'outil Flutter Shape Maker. Dans cet article, vous allez apprendre à bien maîtriser le Widget, puis vous tourner vers l'outil si cela est nécessaire.
Flutter permet de concevoir des applications pour le desktop, et notamment macOS, mais laisse libre cours concernant le déploiement. Dans cet article, vous apprendrez comment créer des fichiers *.dmg pour faciliter ainsi l'installation auprès de vos utilisateurs.
Pour les Insiders (et dev builds), il est possible d'utiliser des applications Android sur Windows 11, via un outil nommé Windows Subsystem for Android. Bien que n'étant pas encore en version stable, il offre déjà une alternative à l'émulateur Android. Si vous voulez savoir comment mettre tout cela en place, cet article vous guide étape par étape.
La sécurité est devenue un sujet majeur suite aux différents ransomwares qui ont été demandés ces derniers mois. Ce sujet ne concerne pas uniquement les serveurs ou clients lourds, les applications mobiles doivent aussi s'y plier. Cet article vous liste tout un tas d'éléments à instaurer pour complexifier la vie des personnes malveillantes.
Flame est un moteur de jeu 2D que vous pouvez utiliser avec Flutter. Mais une fois le hello world passé, il faut bien rentrer dans le coeur du sujet. Le path finding (recherche de chemin en bon français) est une technique qui consiste à se rendre d'un point A à un point B, en tenant compte de différentes contraintes. Dans cet article, vous allez ainsi découvrir comment implémenter ce type d'algorithme, tout en le connectant à Flutter.
L'excellent site Raywerdenlich (à qui l'on doit l'ebook gratuit sur Flutter) propose des tutoriaux toujours très fournis pour Android, iOS ou Flutter. Dans un article publié il y a quelques jours, ils détaillent comment créer un jeu de type démineur en expliquant certes, l'implémentation de la partie graphique, mais également en décrivant l'algorithme qu'il y a derrière.
Trucs & astuces
Utiliser derry pour automatiser vos workflows
derry est un outil développé en Dart qui permet d'exécuter des tâches pour un workflow donné. Très pratique, il peut même exécuter des commandes différentes selon la plateforme (Windows/Mac/Linux). Quelques exemples : s'assurer d'appeler build_runner avant de produire une application, lancer le flutter analyzer, générer de la documentation… N'hésitez pas à lire la documentation qui contient de nombreux exemples.
Déboguer son application à distance
Vous avez un problème qui ne se produit que sur certains téléphones Android, mais n'avez pas accès à ces modèles ? Imaginez-vous qu'il est possible d'accéder à l'USB Debugging à distance ! Il vous suffit pour cela d'utiliser un service comme ngrok qui va rendre cela possible. Un autre cas d'usage est la possibilité d'utiliser un IDE en ligne (comme VSCode.dev) et de tester sur son téléphone. Tout est expliqué dans cet article !
Ne pas attendre un Future
Depuis Dart 2.14, dart:async contient une méthode unawaited(Future), qui fait l'exact inverse du mot clé await : à savoir ne pas attendre qu'un Future se termine.
Autre astuce : si vous voulez ignorer une potentielle exception, il existe une extension ignore() sur les Future. Vous n'avez qu'à indiquer : unawaited(monFuture).ignore()
Sometimes they just appear in my house! BirdGrinning face with smiling eyes
Btw, a new version of #ARKit for #flutter was released with body tracking improvements and various fixes!
AR Kit est la plateforme de réalité augmentée développée pour les produits d'Apple. Oleksandr Leushchenko, le mainteneur de la bibliothèque arkit_flutter_plugin montre quelques exemples de ce que l'on peut obtenir et les performances sont bluffantes !
Material Design 3 a été officialisé lors de l'Android Dev Summit et la couleur est devenue un élément clé du nouveau système de design de Google. Cette bibliothèque officielle vous permet notamment d'extraire facilement les couleurs d'une image et d'obtenir une palette. On regrette simplement que la documentation soit si minimale, mais cela devrait être corrigé rapidement.
L'AFINN est une liste où chaque mot possède un score compris entre -5 et 5. Au plus un mot est proche de la borne maximale, au plus il sera considéré comme "positif" et inversement. Cette bibliothèque est une implémentation en Dart, qui vous permettra ainsi d'analyser des extraits de texte qu'ils soient en anglais, italien, français ou allemand.
Le Widget affichant les performances est très pratique en Flutter, puisqu'il permet de voir si votre code est bien optimisé. Malheureusement cet overlay ne fonctionne pas sur Flutter Web. Heureusement la communauté vient corriger le tir avec cette dépendance !
Les services publics comme la SNCF doivent prendre en compte l'accessibilité dans leur application. Nous avons organisé une session, avec les équipes de Oui.SNCF, qui proposent un tour d'horizon très complet des différents éléments à instaurer, afin d'offrir la meilleure expérience possible.
Votre ordinateur a des ressources limitées et les temps de build pendant vos développements sont devenus ingérables ? Buildman est un nouveau service en early access qui fonctionne sous la forme d'un plugin Android Studio/IntelliJ. Plutôt que lancer le build en local, il est tout simplement déporté sur une machine distante très performante (processeur à 4,5 GHz avec 20 Go de RAM).
Pour rassurer vos utilisateurs sur l'avenir de votre application, rien de tel qu'un peu de transparence. Cet outil vous permet de partager les éléments de la roadmap que vous avez prévus pour les prochaines semaines ou mois. Mais surtout, il est collaboratif et permet à votre audience de vous aider à hiérarchiser les priorités ou encore à partager des idées. Dans une majorité des cas, la version gratuite est suffisante (10 000 pages vue par mois).