GroupAnnotation.fromJsonMap constructor
GroupAnnotation.fromJsonMap(
- Map<String, dynamic> json
)
Implementation
factory GroupAnnotation.fromJsonMap(Map<String, dynamic> json) {
// Parse padding from JSON (stored as LTRB array or object)
EdgeInsets padding = defaultPadding;
final paddingJson = json['padding'];
if (paddingJson != null) {
if (paddingJson is List) {
padding = EdgeInsets.fromLTRB(
(paddingJson[0] as num).toDouble(),
(paddingJson[1] as num).toDouble(),
(paddingJson[2] as num).toDouble(),
(paddingJson[3] as num).toDouble(),
);
} else if (paddingJson is Map) {
padding = EdgeInsets.fromLTRB(
(paddingJson['left'] as num?)?.toDouble() ?? 0,
(paddingJson['top'] as num?)?.toDouble() ?? 0,
(paddingJson['right'] as num?)?.toDouble() ?? 0,
(paddingJson['bottom'] as num?)?.toDouble() ?? 0,
);
}
}
final annotation = GroupAnnotation(
id: json['id'] as String,
position: Offset(
(json['x'] as num).toDouble(),
(json['y'] as num).toDouble(),
),
size: Size(
(json['width'] as num?)?.toDouble() ?? 200.0,
(json['height'] as num?)?.toDouble() ?? 150.0,
),
title: json['title'] as String? ?? '',
color: Color(json['color'] as int? ?? Colors.blue.toARGB32()),
behavior: GroupBehavior.values.byName(
json['behavior'] as String? ?? 'bounds',
),
nodeIds:
(json['nodeIds'] as List<dynamic>?)
?.map((e) => e as String)
.toSet() ??
{},
padding: padding,
zIndex: json['zIndex'] as int? ?? -1,
isVisible: json['isVisible'] as bool? ?? true,
isInteractive: json['isInteractive'] as bool? ?? true,
metadata: json['metadata'] as Map<String, dynamic>? ?? {},
);
return annotation;
}