VSCode本身不运行Dart代码,仅调用本地dart或flutter命令;调试失败根本原因是命令链中断——需确保SDK已安装、PATH正确配置、插件全局启用、launch.json中type按项目类型设为“dart”或“flutter”,且必须用Open Folder打开含合法pubspec.yaml的项目根目录。

VSCode 本身不运行 Dart 代码,它只调用你本地装好的 dart 或 flutter 命令;没装 SDK、PATH 没配对、插件路径设错,点运行就只会卡在“Launching…”或报 command not found —— 这不是 VSCode 的问题,是命令链断在了最底层。
dart --version 能跑,但 VSCode 里 F5 报 “No debug adapter found”
这说明 Dart 插件根本没启动语言服务,常见原因不是插件没装,而是它找不到 dart 可执行文件。
-
dart命令必须全局可用:终端里直接敲dart --version有输出才算过关;VSCode 内置终端和调试器都依赖这个 - macOS/Linux 用户注意:如果双击图标启动 VSCode,它不会继承 shell 的
PATH;必须用终端执行code .打开项目 - Windows 用户检查环境变量:添加的是
flutter\bin(或独立 Dart SDK 的dart-sdk\bin),不是根目录;改完要彻底退出 VSCode 再重开 - 插件必须全局启用:打开命令面板
Ctrl+Shift+P→Extensions: Show Installed Extensions→ 找到Dart(发布者Dart-Code.dart-code)→ 右键选Install for all users(Windows)或Install globally(macOS/Linux)
launch.json 中 type 设成 "dart" 还是 "flutter"?
设错会导致断点不命中、热重载失效、控制台只打印一行 Launching lib/main.dart on Chrome 就结束。
- 纯 Dart CLI 脚本(如
bin/main.dart,不 importpackage:flutter/*):用"type": "dart",且"program"必须是绝对路径,例如"${workspaceFolder}/bin/main.dart" - Flutter 项目(含
lib/main.dart和package:flutter/material.dart):必须用"type": "flutter";设成"dart"会跳过 Flutter 引擎初始化,Widget Inspector 和热重载全失效 - Web 项目首次调试时,
"webBrowser": "chrome"要求已安装 Chrome 的Dart Debug Extension,并允许访问file://URL;设"edge"却没装对应扩展,就会卡在Waiting for connection
右键 main.dart → “Run Dart Program” 没反应或报 Target of URI doesn't exist
这是分析器没加载上下文的典型表现,不是代码写错了,而是项目结构或依赖没就绪。
- 必须用 VSCode 打开**包含
pubspec.yaml的文件夹**(不是单个.dart文件),且该pubspec.yaml格式合法(name:后不能是中文或空格) - VSCode 内置终端里手动执行
dart pub get(Flutter 项目用flutter pub get),别点 GUI 上那个“获取包”按钮——它常静默失败 - 等右下角状态栏显示
Dart: Ready或Analysis server ready后,右键菜单才会生效;卡住两分钟以上可按Ctrl+Shift+P输入Dart: Restart Analysis Server - 如果项目里用了
void main() async {,记得import 'dart:async';;漏掉会导致dart run直接退出,F5 也卡住无响应
Flutter Web 调试卡在 “Launching lib/main.dart on Chrome”
这不是配置漏了,而是开发服务器没就绪或调试协议握手失败,本质是 Chrome 实例冲突或 LSP 缓存错乱。
- 检查
.vscode/launch.json:"request"必须为"launch","type"必须为"dart"(Web 项目也用"dart",不是"chrome"或"pwa-chrome") - 断点必须打在
void main()第一行;打在build()或 widget 构建逻辑里,热重载后才执行,F5 启动时根本不会触发 - 关闭所有 Chrome 实例(包括后台进程);Flutter Web 调试器对 Chrome 实例独占性很强
- 临时禁用
dart.previewLsp设置(设为false);某些旧项目 LSP 缓存错乱会导致调试器无法 attach
最容易被忽略的是:VSCode 插件从不自动扫描 SDK 路径,也不读取 shell 配置里的 PATH;它要么靠系统环境变量生效,要么靠你手动指定 dart.flutterSdkPath。哪怕 flutter --version 在终端能跑,只要这个路径没填对,设备列表、热重载、断点全都会失效。


















