# dtd 4.0.0

A package for communicating with the Dart Tooling Daemon.




## Installing
```
export PUB_HOSTED_URL=https://pub.mirror.p-hatan.ir
flutter pub add dtd
```
Published: 2025-06-04T15:53:54.709189Z
Expected archive SHA-256: 09ddb228b3d1478a093556357692a4c203ff4f9d5f8cda05dfdca0ff3fb7c5d3

Available in cache; verification: upstream_checksum
## Direct dependencies
- dart_service_protocol_shared: ^0.0.3
- json_rpc_2: >=3.0.2 <5.0.0
- stream_channel: ^2.1.2
- unified_analytics: >=7.0.0 <9.0.0
- web_socket_channel: >=2.0.0 <4.0.0

## Package README (untrusted upstream documentation)
# package:dtd

A package for communicating with the Dart Tooling Daemon.

## What is the Dart Tooling Daemon?

The Dart Tooling Daemon is a long-running process meant to facilitate
communication between Dart tools and minimal file system access for a Dart
development workspace.

When writing or running a Dart or Flutter application, in an IDE, the Dart
Tooling Daemon is started by the IDE. It persists over the life of the IDE's
workspace.

When running a Dart or Flutter application from the command line, the Dart
Tooling Daemon  is started by the DevTools server, which is owned by the Dart or
Flutter command line runner. It will persist for the life of the application's
run process.

## Quick Start

```dart
import 'package:dtd/dtd.dart';

/// Since the Dart Tooling Daemon exists within the context of a development
/// environment, any tool using DTD can expect a development environment to
/// exist. This development environment can be an IDE session or a command line
/// run process.
///
/// To develop tools that use package:dtd to connect to the Dart Tooling Daemon,
/// you must have a real DTD instance to interact with. To get the URI of a
/// real DTD instance, you will need to simulate the development environment of
/// a user of your tool. Use one of the following methods:
///
/// 1) Open a Dart or Flutter project in an IDE workspace. The supported IDEs
/// include Android Studio / IntelliJ or VS Code. This simulates how your user
/// may be writing code or running a Dart or Flutter app, and then using your
/// tool. The IDE will automatically start DTD, and you can copy the URI to use
/// for developing your tool.
///
/// From Android Studio / IntelliJ, go to Help > Find Action > Copy DTD URI to
/// Clipboard from VS Code, use the "Dart: Copy DTD URI to Clipboard" command
/// from the command palette
/// 2) Run a Dart or Flutter application from the command line with the
/// --print-dtd flag. This simulates how your user may be running an app from
/// the terminal, and then using your tool. A DTD URI will be printed to CLI,
/// and you can copy that to use for developing your tool.
final dtdUri = 'ws://127.0.0.1:62925/';

final client = await DartToolingDaemon.connect(dtdUri);
```

`client` can then be used to interact with the Dart Tooling Daemon.

See the [Examples](#examples) for details on the built-in interactions.

## Examples

### FileSystem service example

This example shows how to access the file system through the Dart Tooling
Daemon.

See [dtd_file_system_service_example.dart](./example/dtd_file_system_service_example.dart)

### Service Method Example

This example shows how to set up your own service method callbacks through the
Dart Tooling Daemon.

See [dtd_service_example.dart](./example/dtd_service_example.dart)

### Stream Example

This example shows how to send and listen for stream events, through the Dart
Tooling Daemon.

See [dtd_stream_example.dart](./example/dtd_stream_example.dart)

## Changelog
## 4.0.0
- **Breaking Change**: rename `EventParameters` constants to `DtdParameters`.
- **Breaking Change**: delete the `kFileSystemServiceName` constant in favor of
`FileSystemServiceConstants.serviceName`.
- **Breaking Change**: delete the `kUnifiedAnalyticsServiceName` constant in
favor of `UnifiedAnalyticsServiceConstants.serviceName`.
- Added `CoreDtdServiceConstants` and `FileSystemServiceConstants` for shared
use among DTD clients.

## 3.0.0

- Added `ConnectedAppService` to store the connections to Dart and Flutter
applications that DTD is aware of.
- Log exceptions from invalid `streamNotify` events.
- Added `getRegisteredServices` API.
- Added new response types `RegisteredServicesResponse` and
`VmServicesResponse`.
- **Breaking Change**: Changed the `serviceName` parameter for the
`DartToolingDaemon.call` method to have type `String?` instead of `String.`
- **Breaking Change**: When the `params` parameter for the
`DartToolingDaemon.call` method is null, pass the null value along to the client
peer request instead of sending an empty Map value.

## 2.5.1

- Widen the dependency on `unified_analytics` to include 8.0.0.

## 2.5.0

- Update SDK constraints to `^3.5.0`.
- Add `isClosed` getter to `DartToolingDaemon`.

## 2.4.0

- Bump `unified_analytics` dependency to ^7.0.0.

## 2.3.0

- Indicate compatibility with `package:web_socket_channel` 2.x and 3.x.
- Bump minimum version for `package:unified_analytics` to 6.1.0.
- `DartToolingDaemon.connect` will now wait for the web socket to be connected.
- The `DartToolingDaemon` constructor is now public and can be directly called
  with a `StreamChannel<String>`.
- The `params` parameter in `DartToolingDaemon.call()` has been changed from
  `Map<String, Object>?` to `Map<String, Object?>?`.
- `registerService` now allows passing a `Map<String, Object?>? capabilities`
  that can be supplied to clients via new `ServiceRegistered` and
  `ServiceUregistered` events on the `Service` stream (when connected to a
  version of DTD that supports these streams).
- Calling `DartToolingDaemon.onEvent()` now returns a broadcast stream. This
  means multiple listeners can be added, but also means you must add a listener
  prior to calling `streamListen` to avoid the possibility of missing events.

## 2.2.0

- Added new response types `Success`, `StringResponse`, `BoolResponse`, and `StringListResponse`.
- Added contributing guide (`CONTRIBUTING.md`).

## 2.1.0

- Added `getProjectRoots` API.
- Expose constant values from `dtd.dart`.

## 2.0.0

- Documentation improvements.
- Deprecate use of `DTDConnection` in favor of `DartToolingDaemon`.

## 1.0.0

- Solidified interface with dart tooling daemon.
- Added FileSystem service interface.

## 0.0.3

- Added types to service and extension exports.

## 0.0.2

- Added service and extension for accessing the file system through DTD.

## 0.0.1

- Initial version.







 
