flutter / flutter/devtools

Consider moving VM Service Manager logic into `devtools_shared.dart`

Open
#9,122 0 comments 1 reaction 0 assignees View on GitHub
cross-screen P3
Dominant language
Dart
Stars
1.7k
Forks
404
Avg merge
6d 17h
Merged PRs (30d)
18

Description

Moving this logic to `devtools_shared` would allow using the `ServiceManager` and related classes (like `IsolateManager`, `ServiceExtensionManager`) etc. in non-Flutter packages. One place where we'd like to use this logic is in https://github.com/dart-lang/ai/tree/main/pkgs/dart_tooling_mcp_server.

The https://github.com/flutter/devtools/blob/master/packages/devtools_app_shared/lib/service.dart library currently exports code that contains Flutter imports, mainly for use of the `ValueNotifier` and `ValueListenable` classes. So we'd have to modify this code to remove the Flutter dependency in order to move this code to the `devtools_shared` package. This is the **first step** required for this change, and it would be a **breaking change** since several of the public APIs use these classes.

Provide that we can remove all the Flutter dependencies, the next step would be to move the code to the `devtools_shared` package, which would also be a breaking change for the `devtools_app_shared` package.

CC @jakemac53

Contributor guide

Open the contributing guide

Research direction

Start with packages/devtools_app_shared/lib/service.dart, the library named in the issue, and inventory its Flutter imports and public APIs using ValueNotifier or ValueListenable. Determine how those dependencies could be removed without Flutter, then verify that the first step is complete when the service manager APIs no longer require Flutter classes; moving them to devtools_shared is a later step.

Written by the indexing model from the issue text.

Assessment

Tech stack
dart
Domain
tooling
Issue type
Refactor
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.