fromJson static method
Decodes one tagged constraint, or an UnknownConstraint for tags this build does not know.
Implementation
static PropertyConstraint<Object?> fromJson(Map<String, Object?> json) {
if (json.length != 1) return UnknownConstraint(json);
final tag = json.keys.single;
final value = json[tag];
double? d(Object? v, String key) =>
v is Map ? (v[key] as num?)?.toDouble() : null;
int? i(Object? v, String key) =>
v is Map ? (v[key] as num?)?.toInt() : null;
switch (tag) {
case 'range':
return Range(d(value, 'min'), d(value, 'max'));
case 'softRange':
return SoftRange(d(value, 'min') ?? 0, d(value, 'max') ?? 1);
case 'intRange':
return IntRange(i(value, 'min'), i(value, 'max'));
case 'step':
return Step((value as num?)?.toDouble() ?? 1);
case 'powerOfTwo':
return PowerOfTwo(min: i(value, 'min') ?? 1, max: i(value, 'max'));
case 'angleRadians':
return const AngleRadians();
case 'rgbColor':
return const RgbColor();
case 'normalized':
return const Normalized();
case 'layerMask32':
return const LayerMask32();
case 'multiline':
return const Multiline();
case 'pattern':
return TextPattern(value is String ? value : '');
case 'assetExtensions':
return AssetExtensions([
if (value is List)
for (final extension in value)
if (extension is String) extension,
]);
case 'minCount':
return MinCount((value as num?)?.toInt() ?? 0);
case 'sortedDescending':
return SortedDescending(value is String ? value : '');
default:
return UnknownConstraint(json);
}
}