WorkspaceLockConfig.fromMap constructor
Implementation
factory WorkspaceLockConfig.fromMap(Map<Object?, Object?> value) {
final rawDirectory = value['directory'];
if (rawDirectory != null &&
(rawDirectory is! String || rawDirectory.trim().isEmpty)) {
throw const FormatException('lock.directory must be a non-empty string');
}
final rawProfiles = value['profiles'];
if (rawProfiles != null &&
(rawProfiles is! List ||
rawProfiles.any(
(item) => item is! String || item.trim().isEmpty,
))) {
throw const FormatException('lock.profiles must be non-empty strings');
}
final rawClean = value['requireCleanGeneration'];
if (rawClean != null && rawClean is! bool) {
throw const FormatException(
'lock.requireCleanGeneration must be boolean',
);
}
return WorkspaceLockConfig(
directory: rawDirectory as String?,
profiles: rawProfiles == null
? const []
: List<String>.unmodifiable(rawProfiles as List),
requireCleanGeneration: rawClean as bool?,
extensions: Map.unmodifiable({
for (final entry in value.entries)
if (entry.key is String && !_knownKeys.contains(entry.key))
entry.key as String: _freeze(entry.value),
}),
);
}