A Python client library to communicate with a Dart VM Service gRPC server for controlling Flutter applications
Project description
Dart VM Service Client
A Python client library to communicate with a Dart VM Service gRPC server for controlling Flutter applications.
Installation
- Install dependencies using pip:
pip install -r requirements.txt
-
Ensure you have the Dart SDK installed on your system
- The client can automatically find Dart in your PATH
- Alternatively, you can specify the path to the Dart executable
-
If needed, generate the Python gRPC code:
python -m grpc_tools.protoc -I./protos --python_out=. --grpc_python_out=. ./protos/dart_vm_service.proto
This will create the following files:
dart_vm_service_pb2.pydart_vm_service_pb2_grpc.py
Usage
Basic Usage
from dart_vm_client import DartVmClient
# Create a client and start the Dart VM Service automatically
with DartVmClient() as client:
# Connect to a Flutter app
response = client.connect("ws://127.0.0.1:8181/ws")
print(f"Connection status: {response.success}, Message: {response.message}")
if response.success:
# Interact with the app
client.tap_widget_by_text("Login")
# Enable debug features
client.toggle_debug_paint(enable=True)
client.toggle_performance_overlay(enable=True)
# Service is automatically stopped when exiting the "with" block
Manual Service Management
from dart_vm_client import DartVmClient, DartVmServiceClient, DartVmServiceManager
# Start the service separately
service_manager = DartVmServiceManager(port=8080)
if service_manager.start():
# Create a client that connects to the running service
client = DartVmServiceClient("localhost:8080")
try:
# Use the client...
client.connect("ws://127.0.0.1:8181/ws")
finally:
# Clean up
client.close()
service_manager.stop()
Available Methods
The client provides numerous methods for interacting with Flutter apps, including:
Connection Management
connect(vm_service_uri): Connect to a Flutter app VM serviceclose(): Close the connection
Debug Visualization
toggle_debug_paint(enable=True): Toggle debug paintingtoggle_repaint_rainbow(enable=True): Toggle repaint rainbowtoggle_performance_overlay(enable=True): Toggle performance overlaytoggle_baseline_painting(enable=True): Toggle baseline paintingtoggle_debug_banner(enable=True): Toggle debug banner
Widget Interaction
tap_widget_by_key(key_value): Tap a widget by keytap_widget_by_text(text): Tap a widget by textenter_text(key_value, text): Enter text in a widget by keyscroll_into_view_by_key(key_value, alignment=0): Scroll a widget into view by key
Inspection
dump_widget_tree(): Get the widget treedump_layer_tree(): Get the layer treedump_render_tree(): Get the render treetoggle_inspector(enable=True): Toggle the inspector
And many more. See the dart_vm_service_client.py file for a complete list of available methods.
Example
See example_usage.py for a more detailed example of how to use the client.
Custom Server Address
If your gRPC server is running on a different host or port, specify it when creating the client:
client = DartVmServiceClient(server_address="192.168.1.100:8080")
Error Handling
Use try/except to handle gRPC errors:
import grpc
from dart_vm_service_client import DartVmServiceClient
client = DartVmServiceClient()
try:
response = client.connect("ws://127.0.0.1:8181/")
# Your code here
except grpc.RpcError as e:
print(f"RPC Error: {e.code()}, {e.details()}")
finally:
client.close()
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file dart_vm_client-0.0.1.dev4.tar.gz.
File metadata
- Download URL: dart_vm_client-0.0.1.dev4.tar.gz
- Upload date:
- Size: 1.7 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e4e185b8e1bc71f8473c41e54c996076bfa1a839b9d877ecc94c284b48b8a460
|
|
| MD5 |
23c5344776fabc88a542a4df309b839e
|
|
| BLAKE2b-256 |
effb6f5f5db9a3ed90203598761fa454e325fd5a7c113e4b161bca2fabbb38b4
|
File details
Details for the file dart_vm_client-0.0.1.dev4-py3-none-any.whl.
File metadata
- Download URL: dart_vm_client-0.0.1.dev4-py3-none-any.whl
- Upload date:
- Size: 1.8 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9b0b96b003d7e1c74fc198cde11ba36fc687eeb3fed58c76f2501c9e678ea9e9
|
|
| MD5 |
23977516a0b284d1ef41c67f0c8d19d6
|
|
| BLAKE2b-256 |
5857d063be0513db49f622cd5d1ef2dd00f7c18d40beb03e70debb3b5d09420d
|