For instructions on installing the Dart or Flutter extensions, go here.
- #3603: The Dart: Run All Tests command will no longer sometimes add test results to the wrong file in the tree depending on the timing of tests in Flutter projects.
- #3594: The “Run Tests” button in the VS Code test runner will no longer sometimes only show results for the first suite that ran in the tree.
Test Runner Improvements
#3574/#3572: Integration with the new VS Code Test Runner is now enabled by default. Some additional improvements have been made to the integration.
The test tree previously only populated from the file contents when it was first opened, and subsequently only when tests ran. Now the tree updates periodically as the file is modified, including removing tests that have been removed from the file without needing to re-run the whole file or clear the test results.
Dynamic tests (those with variables in their name or using features like Flutter
testWidgets variants) are now grouped under a parent node using the name of the test from the editor. As well as being easier to manage, these can now be removed from the tree if the test definition is renamed rather than remaining until you re-run the entire file.
Failed tests will now show their failure message with an expandable Peek window containing the output and history for the test (this requires VS Code 1.61).
Running multiple tests from a gutter icon/tree node are now grouped together by suite so that they run more quickly rather than a seperate debug session per-test.
- #3580: Running commands like Flutter: New Project in an empty workspace will now correctly initialize the Flutter SDK automatically.
- #3564: The colour of the Flutter UI Guides (preview) can now be controlled with the
"dart.flutterUiGuides"color in the
- #3585: Flutter UI Guides (preview) are now offset by 2px from VS Code’s indent guides to avoid obscuring them.
- #3554: The various Flutter: New XYZ Project commands have been folded together into a single Flutter: New Project command that lists the available templates. Included in this list is the new “skeleton” project template added in Flutter 2.5.0.
- #3552: If a platform has been disabled (for example by running
flutter config -no-enable-android) the “Enable Android for this project” option in the device manager will now offer to enable it globally before enabling it for the project.
- #3576: Running Dart scripts with no specific folder open in VS Code has been improved. Instead of requiring a
launch.jsonor the script to be inside a
toolfolder, loose files will just be run directly when pressing
F5or clicking the Play/Debug icons on the editor title bar.
- #3546: Nested multiline comments will longer cause the following parts of the document to be colored as comments.
- #3236: A new setting
"dart.normalizeFileCasing"has been added that will normalize all file casing when interacting with the analyzer. This may resolve issues where the the
file_nameslint still triggers errors because VS Code continues to use the original casing in its API. This setting is disabled by default because there is a small performance hit to hitting the filesystem to find the natural case of a file.
- #3561: The Dart/Flutter: New Project commands now default to the folders last used when invoking these commands.
- #3545: All commands/actions that call
pubwill now use
dart pubsince the top level
pubcommand is being deprecated.
Docs / website
- #3578: Documentation for how to pass
--define(Dart) in launch configurations has been updated/improved.
- #3577: The
"dart.useKnownChromeOSPorts"setting now defaults to
falseas it should no longer be required. This setting will be removed in a future update so if you find you need to re-enable this, please file an issue on GitHub with details.
Features Enabled with Future SDKs
These features rely on changes to the Dart/Flutter SDKs that have not yet been released to stable channels. They will show up automatically when you update your SDK in future (or if using development channels depending on the exact version).
Renaming Files with Classes
#3354: A new setting
"dart.renameFilesWithClasses" has been added that allows automatic renaming of files (and updating
imports) when classes are renamed if the class/filename match. The allowed options are
"never" is the default and disables renaming.
"prompt" will ask on each rename, and
"always" will rename without prompting.
For the rename to work, the class name and the filename must match (apart from differences in
PascalCase for class names and
snake_case for files).
New TODO Comments Types
#2364: In addition to
TODO, several new comment prefixes are recognised and generate diagnostics -
UNDONE. These can be controlled with the
- #3555: Code completion will no longer show duplicates if an analysis server plugin is enabled that is interested in Dart files.
- #3542: The
Assign value to new local variablecode action will use
prefer_final_localslint is enabled.
Some feature requests and fixes require new features and fixes in upstream projects like VS Code and LSP which use counts of 👍s on those issues to help gauge demand. The Dart-Code website now lists some of the most significant upstream issues with a description of the feature/fix they would enable. Please consider reviewing this list and adding your 👍 to any GitHub issues relevant to features you’d like to see!