This Week in Dart - Issue 10
Hello fellow Dartisans! Welcome to the tenth issue of This Week in Dart! This Week in Dart's aim is to be a useful collection of changes and news from across the Dart ecosystem and its surrounding community.
To contribute to this and future issues, feel free to contribute on GitHub or suggest content for next week on GitHub discussions.
To discuss this week's issue, feel free to join us on the Unofficial Dart Community Discord in the #this-week-in-dart
channel.
Announcements
This week saw the release of Dart 2.18.2, a patch release with the following fixes and improvements:
- Fixed backslash handling in
Uri.parse
(SDK commit e4ae0cf) - Fixed a compiler crash due to super parameter type inference (SDK issue #49357)
To learn how to update your Dart version, check out Get the Dart SDK or download the update from the Dart SDK archive.
Community updates
Discussions
- Announcing an official EdgeDB client for Dart
- Tim Sneath on investment and support of Dart and Flutter
- Flutter Community Hacktoberfest
- Flutter Community Q&A with @MatanLurey and @kevmoo on Dart
- Does dart have a wait/notify system as Java does?
Learning materials
- Dart Package Tutorial – Getting Started
- Dart Immutable Collections
- Serverpod end-to-end sample with detailed inline comments
- Dart Programming - List
Project releases
- ubuntu_session was released
Native Dart client library to access the GNOME Session Manager - package:swagger_parser was released
Generate REST clients and data classes from swagger json files, optionally using package:freezed. - package:print_remover was released
A tool to remove allprint
statements from your project. - package:mc_rcon_dart was released
A library for interacting with a Minecraft server using the RCON protocol.
Project updates
- package:kt_dart v1.0.0 was released
- package:recase v4.1.0 was released
- package:riverpod v2.0.0 was released
- package:chess v0.8.0 was released
- package:stream_chat v5.0.0 was released
- package:sprintf v7.0.0 was released
- package:minerva v0.2.3 was released
- package:daco v0.2.4 was released
- package:twitter_api_v2 v4.1.0 was released
Dart SDK updates
34 unique authors have contributed 140 commits to the Dart SDK in the past week.
The following are some handpicked, interesting changes:
- [cfe] Add initial implementation of type inference for records
- [vm/ffi] Support DynamicLibrary.process() on Windows
- Patterns: initial parser support
- [dart2wasm] Partially lazy constants
- [vm] Support record types and record constants in IL serialization
- [dart2js] Avoid eager initialization with a large set
- Add CLI tool for analyzing Dart VM heapsnapshots
Keep in mind, none of these changes are guaranteed to eventually land in a stable release.
Language updates and discussion
As patterns and records have begun implementation in the SDK, there has been a lot of work around cleanup, remaining questions, and fixes to the related proposals and specifications.
This past week saw version 1.13 of the Records feature specification released. The static constant Record.empty
was removed in favor of the ()
expression which refers to the constant empty record with no fields.
To learn more about records, see the Records feature specification and to contribute to the surrounding discussion check out issues with the Records tag.
To learn more about patterns, see the Patterns feature specification and to contribute to the surrounding discussion check out issues with the Patterns tag.
To learn more about and contribute to discussion of these and other potential changes to the Dart language, visit the Dart language repository.
Package of the week
The package of the week is custom_list!
package:custom_lint
allows package authors and developers to easily write custom lint rules. Lint rules are a powerful way to improve the maintainability of a project through static analysis.
The package goes beyond the capabilities afforded by the traditional analyzer plugin support, but including a lot of custom functionality and utilities necessary for implementing powerful and configurable lints.
Dart already has many diagnostics provided by its analysis server and many more which can be enabled through linter rules, but these may lack rules that your project needs or for best practices your project or company prefers. This package allows you to implement those according to your needs or for third-party packages which the standard lint rules do not account for.
You can learn more about using package:custom_lint
and implementing your first custom rules in its Usage section, its announcement post, or an extensive video tutorial about Creating custom lint rules for Dart and Flutter projects.
Thanks to @Luckey-Elijah for the suggestion!
Dart's package ecosystem is growing fast, and we want to help foster that growth. If you know of any great open source projects, let us know by suggesting a package on GitHub discussions.
Upcoming events
Check the Flutter Meetup Network and the Dart Language tag on Meetup to find an event near you or online and connect with other Dart developers!
Let us know about other future events on the events discussion board.
Quotes and notes
Share quotes and comments you see and hear about Dart on our quotes discussion board for future inclusion!
Dart jobs
The following are some jobs that will provide you the opportunity to use or even build Dart.
If you know of any jobs which use or are related to Dart, let us know in the Job postings for Dart discussion board.
- The Dart and Flutter teams have job openings across a wide variety of roles. See Flutter and Dart team job openings for more information.
Embrace
Superlist
Very Good Ventures
- Mid-Level Flutter Engineer (Remote, Spain)
- Mid-Level Flutter Engineer (Remote, US)
- Senior Flutter Engineer (Remote, Poland)
- Senior Flutter Engineer (Remote, Spain)
- Senior Flutter Engineer (Remote, US)