tryParse static method

NexusInAppDesign? tryParse(
  1. Object? raw
)

Implementation

static NexusInAppDesign? tryParse(Object? raw) {
  if (raw is! Map) return null;
  final j = raw.cast<String, dynamic>();
  final blocks = (j['blocks'] as List?)
          ?.whereType<Map>()
          .map((b) => NexusInAppBlock.tryParse(b.cast<String, dynamic>()))
          .whereType<NexusInAppBlock>()
          .toList() ??
      const <NexusInAppBlock>[];
  if (blocks.isEmpty) return null;
  final overlay = _map(j['overlay']);
  final close = _map(j['close']);
  return NexusInAppDesign(
    blocks: blocks,
    frame: NexusInAppFrame._parse(_map(j['frame'])),
    overlayColor: (parseHex(overlay['color']) ?? const Color(0xFF0B1220))
        .withValues(alpha: _num(overlay['opacity'], 0.55).clamp(0.0, 0.95)),
    dismissOnBackdropTap: overlay['dismissOnTap'] != false,
    close: NexusInAppClose(
      show: close['show'] != false,
      circle: close['style'] == 'circle',
      color: parseHex(close['color']) ?? const Color(0xFF6B7280),
      atStart: close['position'] == 'start',
    ),
    animation: _str(j['animation'], 'fade'),
    autoDismissSeconds: _num(j['autoDismiss'], 0).round(),
    direction: _str(j['dir'], 'auto'),
  );
}