| # 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) |