sublime text 不能作为 dart/flutter 主力开发环境,仅支持语法高亮、ctrl+click 跳转、保存自动格式化和有限 lsp 补全;必须安装 nickaivazis 或 mrjones 的 dart 插件,复用 flutter 自带 sdk,配置 path 优先于硬填路径,并依赖终端执行 flutter run 与热重载。

Sublime Text 不能作为 Dart/Flutter 的主力开发环境,它不支持热重载、调试、设备管理或项目导航;你最多能配出语法高亮、Ctrl+Click 跳转、保存自动格式化和有限的 LSP 补全——前提是 PATH 正确、插件选对、分析服务器重启到位。
装哪个 Dart 插件才不标红、不跳错
只装 Dart(作者是 nickaivazis 或 mrjones),不是 Dartlang、SublimeDart,更不是任何带 “Flutter” 字样的插件。后三者已停更或不兼容 null safety 后语法:required、??=、泛型推导全会标红,Ctrl+Click 直接失效。
- 通过
Ctrl+Shift+P→Package Control: Install Package搜索Dart,严格核对作者字段 - 装完必须重启 Sublime,否则右下角不会显示
Dart - 如果右下角没反应,右键文件 →
Open all with current extension as→Dart手动激活
dart_sdk_path 填错等于白配
这个配置项不是必须填,但一旦填错,会直接导致 Failed to start the Dart analysis server 或 Unable to locate SDK。优先走系统 PATH,而不是硬写路径。
- 终端先跑
which dart和flutter doctor -v,确认输出里有类似/opt/homebrew/Caskroom/flutter/3.19.5/flutter/bin/cache/dart-sdk的路径 - 别单独下载 Dart SDK —— 复用 Flutter 自带的,版本才匹配,
analysis_server.dart.snapshot才找得到 - 填路径时,必须指向
cache/dart-sdk目录,不是 Flutter 根目录,也不是dart-sdk/bin - 填完后必须
Ctrl+Shift+P→Dart: Restart Analysis Server,等状态栏出现Analysis server ready
LSP-dart 是补全唯一可行路径,但别指望它多聪明
原生 Dart 插件的补全在 Dart 2.12+ 后就废了,返回空列表或静默失败。想有点提示,只能上 LSP + LSP-dart。
- 先通过
Package Control安装LSP和LSP-dart - 确保终端能跑
dart --version,否则LSP-dart启动失败,状态栏右下角不会显示LSP-dart - 打开
LSP.sublime-settings,把"command"明确设为/path/to/flutter/bin/cache/dart-sdk/bin/dart,不能依赖PATH - 补全不会自动弹,要手动触发:
Ctrl+Shift+P→LSP: Auto Complete,或保存后等几秒再按Ctrl+Space -
WidgetsBinding.instance、required参数、package:flutter里的Widget补全基本靠猜 —— 这是LSP-dart的固有限制,不是你配错了
为什么 flutter run 在 Sublime 里卡死或报 No devices
Sublime 的构建系统不继承完整 shell 环境,缺失 PATH 中的 flutter/bin 和 FLUTTER_ROOT 变量,也不支持长时进程、TTY 交互和 daemon 管理。所有运行、热重载、调试都必须回到终端执行 flutter run,然后按 r 手动触发热重载。
- 常见错误现象:
Command "run" not found、No devices detected、进程挂起无响应 - 根本原因:Sublime 构建系统设计上就不支持 Flutter 工具链所需的双向通信和后台守护进程
- 别用自定义构建系统硬套
flutter run—— 它只会阻塞面板,无法热重载,也不能响应输入 - 真要快速启动,用终端执行
flutter run,再切回 Sublime 编辑;改完代码保存后,切回终端按r
最易被忽略的是 GUI 启动的 Sublime 读不到 shell 配置(比如 macOS 的 ~/.zshrc),哪怕终端里 which dart 有输出,编辑器也看不见。这不是插件问题,是环境隔离问题 —— 解决方案不是填死路径,而是让 Sublime 从终端启动:subl .,或配置系统级 PATH 并重启整个 GUI 会话。











