start static method
String
start(
- List<
String> names, { - PlaybookSpeed? speed,
- Map<
String, dynamic> ? data, - bool overlay = true,
- bool loop = false,
- int countdown = 0,
- PlaybookClock? clock,
Starts the playbooks names back to back and returns the run's id.
speed overrides each playbook's own, and data is shared by all of
them. With loop, the list repeats until stop. A countdown counts
that many seconds down on screen first, so there's time to start a
screen recording. Throws a LiveException when a name is unknown or a
playbook is running.
Implementation
static String start(
List<String> names, {
PlaybookSpeed? speed,
Map<String, dynamic>? data,
bool overlay = true,
bool loop = false,
int countdown = 0,
PlaybookClock? clock,
}) {
if (_runId != null || Playbook.isRunning) {
throw LiveException(
'A playbook is already running${_runId == null ? '' : ' ($_runId)'}. '
'Stop it first.',
);
}
if (names.isEmpty) {
throw const LiveException.invalidParams('Name a playbook to run.');
}
for (final String name in names) {
if (PlaybookRegistry.find(name) == null) {
final List<String> registered = PlaybookRegistry.playbooks.keys
.toList();
throw LiveException.invalidParams(
'There\'s no playbook called "$name".'
'${registered.isEmpty ? ' Create one with metro make:playbook $name' : ' Registered: ${registered.join(', ')}.'}',
);
}
}
final String runId = 'pb_${++_counter}';
_runId = runId;
_running = _run(
runId,
names,
speed: speed,
data: data,
overlay: overlay,
loop: loop,
countdown: countdown,
clock: clock,
);
return runId;
}