create method
Creates a new version of the device. uuid is usually assigned by the platform within this method.
Implementation
@override
Future<void> create() async {
final deviceTypes = await SimctlCli.instance.availableDeviceTypes();
final deviceType = deviceTypes[model];
if (deviceType == null) {
throw StateError('$model is not available in ${deviceTypes.keys.join(", ")}');
}
final runtimes = await SimctlCli.instance.availableRuntimes();
final runtimesForOs = runtimes[os.toString().split('.').last];
if (runtimesForOs?.isEmpty ?? true) {
throw StateError('No runtimes available for $osVersion');
}
final runtimeKey = runtimesForOs!.keys.firstWhere((e) => e == osVersion,
orElse: () =>
throw StateError('$osVersion is not available from ${runtimesForOs.keys.join(", ")}'));
final runtime = runtimesForOs[runtimeKey]!;
final deviceName =
name ?? (await SimctlCli.instance.generateName(model: model!, osVersion: osVersion));
final createdOutput =
await runWithError('xcrun', ['simctl', 'create', deviceName, deviceType, runtime]);
uuid = createdOutput.trim();
}