flutter-control-and-screenshot
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseFlutter Driver Control & Screenshot
Flutter Driver 控制与截图
This skill outlines the process of adding support to a Flutter application, launching it via the Dart MCP server, controlling it (tapping, finding widgets), and capturing screenshots (handling Web/Desktop specific constraints).
flutter_driver本技能介绍了为Flutter应用添加支持、通过Dart MCP服务器启动应用、控制应用(点击、查找组件)以及捕获截图(处理Web/桌面端特定限制)的流程。
flutter_driverPrerequisites
前提条件
- Dart MCP Server: Ensure the is active.
dart-mcp-server - Flutter Project: You need a working Flutter project.
- Dart MCP服务器:确保处于运行状态。
dart-mcp-server - Flutter项目:你需要一个可正常运行的Flutter项目。
Step 1: Add Dependency
步骤1:添加依赖
Add to the in your .
flutter_driverdev_dependenciespubspec.yamlyaml
dev_dependencies:
flutter_driver:
sdk: flutterRun or use the tool.
dart pub getmcp_dart-mcp-server_pub在的中添加。
pubspec.yamldev_dependenciesflutter_driveryaml
dev_dependencies:
flutter_driver:
sdk: flutter运行或使用工具。
dart pub getmcp_dart-mcp-server_pubStep 2: Create Driver Entry Point
步骤2:创建驱动入口文件
Create a separate entry point, typically , to enable the driver extension without polluting .
test_driver/app.dartmain.dart[!IMPORTANT] Replacewith the actual name of your package as defined inyour_app_package_name.pubspec.yaml
dart
// test_driver/app.dart
import 'package:flutter_driver/driver_extension.dart';
import 'package:your_app_package_name/main.dart' as app; // Import your main app
void main() {
// Enable the extension
enableFlutterDriverExtension();
// Run the app
app.main();
}创建一个独立的入口文件,通常为,以在不污染的情况下启用驱动扩展。
test_driver/app.dartmain.dart[!IMPORTANT] 将替换为your_app_package_name中定义的实际包名。pubspec.yaml
dart
// test_driver/app.dart
import 'package:flutter_driver/driver_extension.dart';
import 'package:your_app_package_name/main.dart' as app; // 导入你的主应用
void main() {
// 启用扩展
enableFlutterDriverExtension();
// 运行应用
app.main();
}Step 3: Launch App via MCP
步骤3:通过MCP启动应用
Use the tool.
mcp_dart-mcp-server_launch_app- :
targettest_driver/app.dart - :
device(orchrome,macos,linux)windows - : Absolute path to your project root.
root
Note: The tool returns a DTD URI (Data Tooling Daemon) and a PID. Save these.
使用工具。
mcp_dart-mcp-server_launch_app- :
targettest_driver/app.dart - :
device(或chrome,macos,linux)windows - : 项目根目录的绝对路径。
root
注意: 该工具会返回一个DTD URI(数据工具守护进程)和PID,请保存这些信息。
Step 4: Connect to DTD
步骤4:连接到DTD
Use with the URI returned from the launch step.
mcp_dart-mcp-server_connect_dart_tooling_daemonjson
{
"uri": "ws://127.0.0.1:..."
}使用工具,并传入启动步骤返回的URI。
mcp_dart-mcp-server_connect_dart_tooling_daemonjson
{
"uri": "ws://127.0.0.1:..."
}Step 5: Web Screenshot Strategy (Browser Subagent)
步骤5:Web端截图策略(浏览器子代理)
If running on Web (Chrome), 's screenshot command may not work or may not be supported directly in all environments. A robust fallback is to use the .
flutter_driverbrowser_subagent- Get App URL: Use with the app's PID. Look for lines like
mcp_dart-mcp-server_get_app_logs. The app logs usually contain the local HTTP URL.A Dart VM Service on Chrome is available at: http://127.0.0.1:XXXXX - Navigate & Snapshot: Call .
browser_subagent- Task: "Navigate to [URL]. Wait for render. Take a screenshot."
如果在**Web (Chrome)**上运行,的截图命令可能无法工作,或在部分环境中不被直接支持。一个可靠的替代方案是使用。
flutter_driverbrowser_subagent- 获取应用URL: 使用工具并传入应用的PID。查找类似
mcp_dart-mcp-server_get_app_logs的行,应用日志中通常包含本地HTTP URL。A Dart VM Service on Chrome is available at: http://127.0.0.1:XXXXX - 导航并截图: 调用。
browser_subagent- 任务: "导航至[URL],等待渲染完成,然后截取截图。"
Step 6: Control the App (Flutter Driver)
步骤6:控制应用(Flutter Driver)
Use to interact with the app.
mcp_dart-mcp-server_flutter_driver- Get Widget Tree: (useful to find keys/labels).
mcp_dart-mcp-server_get_widget_tree - Tap:
json
{ "command": "tap", "finderType": "ByText", "text": "Settings" } - Scroll, Enter Text, etc. are also available.
使用工具与应用交互。
mcp_dart-mcp-server_flutter_driver- 获取组件树: (有助于查找键/标签)。
mcp_dart-mcp-server_get_widget_tree - 点击:
json
{ "command": "tap", "finderType": "ByText", "text": "Settings" } - 滚动, 输入文本等操作也可支持。
Step 7: Cleanup
步骤7:清理资源
Always stop the app when done to free up ports and resources.
- Use with the PID.
mcp_dart-mcp-server_stop_app
完成操作后请务必停止应用,以释放端口和资源。
- 使用工具并传入PID。
mcp_dart-mcp-server_stop_app
Example Workflow
示例工作流
- Launch .
test_driver/app.dart - Connect DTD.
- Log Check: Find localhost URL.
- Browser Subagent: Navigate & Screenshot (Home/Dashboard).
- Flutter Driver: Tap "Tasks" tab.
- Browser Subagent: Screenshot (Tasks).
- Flutter Driver: Tap "Settings" tab.
- Browser Subagent: Screenshot (Settings).
- Stop App.
- 启动 .
test_driver/app.dart - 连接 DTD.
- 检查日志: 找到本地URL.
- 浏览器子代理: 导航并截图(首页/仪表盘).
- Flutter Driver: 点击"Tasks"标签页.
- 浏览器子代理: 截图(任务页面).
- Flutter Driver: 点击"Settings"标签页.
- 浏览器子代理: 截图(设置页面).
- 停止应用.