You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 19:09:51