Dart Code
Dart & Flutter support for Visual Studio Code Discord Chat Follow on Twitter Contribute to Dart Code

Launch Configuration

A launch configuration (.vscode/launch.json) file is not required for the most common use cases for Dart/Flutter as long as you stick to some common conventions:

However there are some things you can’t do without a launch configuration, such as:

You can open your launch configuration file by clicking on the Debug side bar and then either the cog icon at the top, or the create a launch.json file link below the big blue button, depending on whether you already have one or not.

"configurations": [
	{
		// A name for the launch config. This will show in the dropdown on the Run side bar.
		"name": "Current File (release mode)",

		// This should always be "dart" for Dart/Flutter apps.
		// This selects the Dart debugger.
		"type": "dart",

		// This can be "launch" to start an app, or "attach" to attach to an existing app.
		"request": "launch",

		// The directory to start running the app from.
		"cwd": "/foo/bar",

		// The entry script to execute when running the app.
		// Set to a "web" in a Dart web app to run in web move.
		// Set to "test" in an app with tests to run all tests.
		"program": "bin/main.dart",

		// Any custom environment variables to set when running the app with this
		// launch config.
		"env": {
			"RELEASE_MODE": true
		}

		// Arguments to be passed to the Dart VM when running Dart CLI scripts.
		// 
		// These arguments appear between "dart" and "run":
		//
		//     dart (vmAdditionalArgs) run (toolArgs) bin/main.dart (args)
		"vmAdditionalArgs": [
			"--vm_name=foo",
		],
		
		// Arguments to be passed to the Dart or Flutter tool.
		// 
		// These arguments appear after "dart run" or "flutter run":
		//
		//     dart (vmAdditionalArgs) run (toolArgs) bin/main.dart (args)
		//     flutter run (toolArgs) -t lib/main.dart (args)
		"toolArgs": [
			"--dart-define", "MY_VAR=foo",
			"--enable-experiment=patterns",
		],

		// Arguments to be passed to the Dart script being run (passed to `main()`).
		//
		// These arguments appear after the script being run.
		//
		//     dart (vmAdditionalArgs) run (toolArgs) bin/main.dart (args)
		//     flutter run (toolArgs) -t lib/main.dart (args)
		"args": [
			"one", "two",
		],

		// Setting "templateFor" to a relative path will cause this config to be used for
		// all default Run/Debug CodeLens links and running tests from the test runner.
		// - Setting an empty string "" will apply it to the whole project (this is different
		//   to not being set, where it will not be used as a template at all).
		// - Setting it to "test" will apply only to files inside the "test" folder, etc.
		"templateFor": "test",

		// "debugConsole" or "terminal". If set to "terminal", will run in the built-in
		// terminal and will support reading from `stdin`. However some other debug
		// features may be limited.
		"console": "debugConsole",

		// Set to run a Flutter app on a specific device, ignoring the device selected
		// in the status bar.
		"deviceId": "iphone",

		// "debug", "profile" or "release".
		"flutterMode": "debug",

		// Allows running Flutter tests on a real device instead of the default headless
		// flutter-tester device.
		"runTestsOnDevice": false,

		// If codeLens is defined, this launch configuration can be launched from custom
		// CodeLens links in the editor (see the page linked above for more info).
		"codeLens": {

			// This array sets where custom CodeLens links will be rendered:
			// - run-test: Above test functions as a Run link
			// - debug-test: Above test functions as a Debug link
			// - run-test-file: Above main functions in test files as a Run link
			// - debug-test-file: Above main functions in test files as a Debug link
			// - run-file: Above main functions in bin/tool/lib files as a Run link
			// - debug-file: Above main functions in bin/tool/lib files as a Debug link
			"for": [ "run-test", "run-test-file", "debug-test", "debug-test-file" ],

			// If specificed, the custom CodeLens will only appear for files that begin
			// with this path.
			"path": "test/integration_tests",

			// Text for the custom CodeLens. If not specified, will use the name field
			// from the parent launch configuration. The string "${debugType}" here will
			// be replaced with "run" or "debug" depending on the rendered position
			// (see the for field above).
			"title": "${debugType} (release)"
		},

		// customTool is to support some specific complex configurations where instead of running
		// "dart" or "flutter" when starting debug sessions, another tool/script should be invoked.
		// Custom tools must be completely compatible with the process they are replacing (in many
		// cases they may just be wrapper scripts).
		//
		// See https://github.com/dart-lang/sdk/blob/main/third_party/pkg/dap/tool/README.md
		// for more details on how these values are used by the debug adapter.
		"customTool": "my_custom_dart",
		"customToolReplacesArgs": 1,
	}
]