Skip to content

[FEATURE] Dart/Flutter Support #790

Description

@JohnGalt1717

🚀 Feature Request

Is your feature request related to a problem?

I would like to be able to get grok build etc. to debug dart/flutter apps just like I can with my C# backend.

Describe the solution you'd like

Please add dart/flutter debugging support with the ability to pass the head to use in.

Describe alternatives you've considered

Using vs code with debugmcp and the flutter extension debugger.

💡 Use Case

I want to be able to do e2e tests with great debug breakpoints and pulling variable values etc..

📊 Impact

  • Who would benefit: Dart/flutter developers
  • Priority: High
  • Complexity: Unknown

🤝 Are you willing to contribute?

  • Yes, I'd like to implement this feature
  • Yes, I'd like to help test it
  • No, but I'm available for questions

Activity

  1. debugmcpdev commented on Oct 9, 2026

    @debugmcpdev
    Collaborator

    M1 (Dart) merged in #880. On main now, unreleased:

    • create_debug_session { language: "dart" } — the debugger is the SDK's own dart debug_adapter, run from whatever Dart or Flutter SDK is on the machine (DART_SDK / FLUTTER_ROOT, fvm pins, PATH); nothing vendored.
    • Launch a Dart program or a package:test file (args: ["-n", "test name"] picks one case); breakpoints, conditions, logpoints, stepping, variables, evaluate, exception filters, stopOnEntry, noDebug, exit codes.
    • Attach by vmServiceUri or vmServiceInfoFile (never by PID), including a target started with --pause_isolates_on_start; detach leaves it running.
    • The Docker image carries the Dart SDK.
    • Guide: docs/dart/README.md; the measured facts behind it: docs/dart/spike-notes.md.

    Next, as separate PRs: M2 = Flutter desktop/web and flutter test / integration_test (the runner selection, deviceId, Windows flutter.bat bypass and warm-cache check are already in, awaiting their e2e coverage); M3 = Android emulators and devices, which is the "pass the device to use" part of this request, measured in the spike (-d emulator-5554, integration_test on the emulator, breakpoints in the app under test).

    Follow-ups filed from the work so far: #876 (hot reload / hot restart tool), #877 (list_devices), #879 (Dart's step_over stops once per token position).

  2. debugmcpdev commented on Oct 9, 2026

    @debugmcpdev
    Collaborator

    All three milestones are on main, unreleased: #880 (M1, Dart), #881 (M2, Flutter desktop and tests), #883 (M3, Android emulator).

    What an agent can do with language: "dart" now, each measured through the server (docs/dart/spike-notes.md has the numbers):

    • Dart programs and dart test cases: breakpoints, conditions, logpoints, stepping, variables, evaluate, exception filters, stopOnEntry, noDebug, exit codes; attach by VM-service URI or service-info file.
    • Flutter widget tests (flutter test, --name picks one), integration_test files, and flutter run on a desktop device or an Android emulator — deviceId is the -d value flutter devices prints (windows, emulator-5554, a device serial). A breakpoint in the app code hits when an integration test drives it, which was the request here.
    • A Flutter launch answers pending: true while the tool builds; wait_for_stop collects the first stop (widget test ~6 s warm, desktop ~20 s, emulator ~21 s; a fresh project's first launch ~30 s, a cold Gradle build minutes). flutter test/flutter run sessions end without an exit code (the SDK adapter sends terminated only); the ✓ name lines are in get_output.

    Guide: docs/dart/README.md. Quirks: the Dart section of docs/KNOWN_ISSUES.md.

    Not yet: attaching to an app another flutter run started on an emulator (#882), hot reload/restart as a tool (#876), list_devices (#877), web targets (listed by flutter devices, not exercised), physical devices (same path as the emulator, no device measured). Closing this issue with the three PRs; the follow-ups have their own numbers.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions