如果您使用 VS Code 作为 Flutter IDE,您可以使用 VSC 启动配置和任务从单次启动并发运行,并为所有设备启用热重载。
如果您在执行 flutter run -d all 时遇到问题,这是一种替代解决方案,可让您指定应运行的设备。
确保您指定的设备在运行flutter devices 时可用。
您当前的launch.json 文件可能如下所示:
{
"version": "0.2.0",
"configurations": [
{
"name": "Flutter",
"type": "dart",
"request": "launch",
"flutterMode": "debug"
}
]
}
设置
您需要更新此 launch.json 文件并在应用程序根目录中的同一 .vscode 文件夹中创建 tasks.json。
仅将以下代码粘贴到launch.json
{
"version": "0.2.0",
"configurations": [
{
"name": "Flutter-All",
"preLaunchTask": "Flutter-Launch-All",
"type": "dart",
},
{
"name": "Flutter-iOS",
"preLaunchTask": "Flutter-Launch-iOS",
"type": "dart",
},
{
"name": "Flutter-Android",
"preLaunchTask": "Flutter-Launch-Android",
"type": "dart",
},
{
"name": "Flutter-Web",
"preLaunchTask": "Flutter-Launch-Web",
"type": "dart",
}
],
}
仅将以下代码粘贴到tasks.json
{
"version": "2.0.0",
"tasks": [
{
"label": "Flutter-Launch-All",
"dependsOn": [
"Flutter-Launch-iOS",
"Flutter-Launch-Android",
"Flutter-Launch-Web"
]
},
{
"label": "Flutter-Launch-iOS",
"type": "shell",
"command": "flutter run -d 'iPhone 11' "
},
{
"label": "Flutter-Launch-Android",
"type": "shell",
"command": "flutter run -d 'AOSP on IA Emulator' "
},
{
"label": "Flutter-Launch-Web",
"type": "shell",
"command": "flutter run -d 'Chrome' "
}
]
}
相应地替换设备名称('iPhone 11'、'AOSP on IA Emulator'、'Chrome')。
启动所有设备
按 F5 键。
你就完成了。
如果Start Debugging 的 F5 快捷方式对您不起作用,请导航至侧面板上的 Debug & Run 并选择您刚刚创建的 Flutter-All 配置,然后运行。
然后您将看到终端窗口出现,并且能够在运行的各个热重载会话之间切换(作为它们自己 shell 中的任务)。
一些背景
我们通过任务上的dependsOn 选项使用“复合任务”,而不是用于配置的“复合”。
由于不可能同时启动配置,只能按顺序启动,我们使用可以同时运行的任务。
因此,“Flutter-All”配置执行 iOS、Android 和 Web 配置的任务。
如果使用复合,则需要在下一次运行之前完成配置,这不是我们想要的。
对于任务,我们可以选择顺序执行它们,但默认情况下,当使用 dependsOn 选项时它们将同时执行。
//Do not use this in your launch.json file unless you want to debug one platform at a time.
"compounds": [
{
"name": "Flutter-All",
"configurations": ["Flutter-iOS", "Flutter-Android", "Flutter-Web"]
}
]