Flutter在Neovim+DAP中启用调试后存文件崩溃(退出码-30)
在Neovim中使用Flutter开发遇到的调试崩溃问题
我尝试在Neovim中使用Flutter开发,但持续遇到问题:使用flutter-tools.nvim插件并搭配FVM,启用调试器后首次保存文件时程序崩溃,退出码为-30。
flutter doctor -v 输出
[✓] Flutter (Channel stable, 3.24.3, on macOS 15.0 24A335 darwin-arm64, locale en-QA) • Flutter version 3.24.3 on channel stable at /Users/aghazaly/fvm/versions/stable • Upstream repository https://github.com/flutter/flutter.git • Framework revision 2663184aa7 (3 weeks ago), 2024-09-11 16:27:48 -0500 • Engine revision 36335019a8 • Dart version 3.5.3 • DevTools version 2.37.3 [✓] Android toolchain - develop for Android devices (Android SDK version 34.0.0) • Android SDK at /Users/aghazaly/Library/Android/sdk • Platform android-34, build-tools 34.0.0 • Java binary at: /Applications/Android Studio.app/Contents/jbr/Contents/Home/bin/java • Java version OpenJDK Runtime Environment (build 17.0.11+0-17.0.11b1207.24-11852314) • All Android licenses accepted. [✓] Xcode - develop for iOS and macOS (Xcode 16.0) • Xcode at /Applications/Xcode.app/Contents/Developer • Build 16A242d • CocoaPods version 1.15.2 [✓] Chrome - develop for the web • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome [✓] Android Studio (version 2024.1) • Android Studio at /Applications/Android Studio.app/Contents • Flutter plugin can be installed from: 🔨 https://plugins.jetbrains.com/plugin/9212-flutter • Dart plugin can be installed from: 🔨 https://plugins.jetbrains.com/plugin/6351-dart • Java version OpenJDK Runtime Environment (build 17.0.11+0-17.0.11b1207.24-11852314) [✓] VS Code (version 1.93.1) • VS Code at /Applications/Visual Studio Code.app/Contents • Flutter extension version 3.98.0
flutter-tools.nvim 配置
return { 'akinsho/flutter-tools.nvim', lazy = false, dependencies = { 'nvim-lua/plenary.nvim', 'stevearc/dressing.nvim', -- 可选,用于vim.ui.select 'mfussenegger/nvim-dap', }, config = function() local api = vim.api -- 切换Flutter开发日志的函数 local function toggle_log() local wins = api.nvim_list_wins() for _, id in pairs(wins) do local bufnr = api.nvim_win_get_buf(id) if api.nvim_buf_get_name(bufnr):match '.*/([^/]+)$' == '__FLUTTER_DEV_LOG__' then return vim.api.nvim_win_close(id, true) end end pcall(function() vim.api.nvim_command 'split + __FLUTTER_DEV_LOG__ | resize 15' end) end -- 设置切换Flutter开发日志的快捷键 vim.keymap.set("n", "<leader>fl", toggle_log, { desc = "切换Flutter开发日志" }) -- require("telescope").load_extension("flutter") require("flutter-tools").setup { ui = { border = "rounded", notification_style = 'native', }, decorations = { statusline = { app_version = false, device = true, project_config = true, } }, debugger = { enabled = true, run_via_dap = true, exception_breakpoints = {}, evaluate_to_string_in_debug_views = true, register_configurations = function(paths) local dap = require("dap") dap.adapters.dart = { type = "executable", command = paths.flutter_bin, args = { "debug-adapter" }, } dap.configurations.dart = {} require("dap.ext.vscode").load_launchjs() end, }, root_patterns = { ".git", "pubspec.yaml" }, fvm = true, widget_guides = { enabled = true, }, closing_tags = { enabled = true, highlight = 'LineNr', prefix = '// ', priority = 0, }, dev_log = { enabled = true, filter = nil, notify_errors = false, open_cmd = "15split", }, dev_tools = { autostart = false, auto_open_browser = false, }, outline = { open_cmd = "30vnew", auto_open = false }, lsp = { color = { -- 显示dart变量的衍生颜色 enabled = false, -- 是否高亮颜色变量,仅支持flutter >= 2.10 background = false, -- 高亮背景 background_color = nil, -- 当背景透明时必填(例如 background_color = { r = 19, g = 17, b = 24},) foreground = false, -- 高亮前景 virtual_text = true, -- 使用虚拟文本显示高亮 virtual_text_str = "■", -- 用于高亮的虚拟文本字符 }, init_options = { onlyAnalyzeProjectsWithOpenFiles = false, suggestFromUnimportedLibraries = true, closingLabels = true, outline = false, flutterOutline = false, }, settings = { showTodos = true, completeFunctionCalls = true, analysisExcludedFolders = { "$HOME/AppData/Local/Pub/Cache", "$HOME/.pub-cache", "/opt/homebrew/", "$HOME/tools/flutter/", }, renameFilesWithClasses = "prompt", enableSnippets = true, updateImportsOnRename = true, } } } end, }
nvim-dap 配置
return { { "rcarriga/nvim-dap-ui", dependencies = { "mfussenegger/nvim-dap", "nvim-neotest/nvim-nio" } }, { "mfussenegger/nvim-dap", dependencies = { 'nvim-neotest/nvim-nio', 'rcarriga/nvim-dap-ui', }, event = 'VeryLazy', config = function() local dap = require('dap') dap.configurations.dart = { { type = "dart", request = "launch", name = "启动dart", dartSdkPath = "$HOME/fvm/default/bin/flutter", flutterSdkPath = "$HOME/fvm/default/bin/flutter", program = "${workspaceFolder}/lib/main.dart", -- 确保路径正确 cwd = "${workspaceFolder}", }, { type = "flutter", request = "launch", name = "启动flutter", dartSdkPath = "$HOME/fvm/default/bin/flutter", flutterSdkPath = "$HOME/fvm/default/bin/flutter", program = "${workspaceFolder}/lib/main.dart", -- 确保路径正确 cwd = "${workspaceFolder}", } } require("dapui").setup({ icons = { expanded = "▾", collapsed = "▸" }, layouts = { { elements = { { id = "scopes", size = 0.25 }, "breakpoints", "stacks", "watches", }, size = 10, -- 列数 position = "bottom", }, }, }) end } }
内容的提问来源于stack exchange,提问作者A G
相关产品推荐
相关产品推荐

