parse method

NudgeConfig? parse(
  1. Map<String, dynamic> templateConfig
)

Returns null when the content tree is missing — such a campaign has nothing to show, so it is dropped rather than presented empty.

Implementation

NudgeConfig? parse(Map<String, dynamic> templateConfig) {
  final rawDesignWidth = optDouble(
    templateConfig,
    'designWidth',
    defaultCanvasDesignWidth,
  );
  final designWidth =
      rawDesignWidth > 0 ? rawDesignWidth : defaultCanvasDesignWidth;
  if (optString(templateConfig, 'layoutMode') == 'canvas') {
    final canvas = optMap(templateConfig, 'canvas');
    if (canvas == null || canvas.isEmpty) return null;
    return NudgeConfig(
      surface: _surface(
        optMap(templateConfig, 'container'),
        canvasMode: true,
      ),
      content: const NudgeColumn(
        crossAxisAlignment: CrossAxisAlignment.start,
        mainAxisAlignment: MainAxisAlignment.start,
        children: [],
      ),
      canvas: CampaignCanvasParser(designTokens: designTokens).parse(canvas),
      designWidth: designWidth,
    );
  }
  // Full Screen is a canvas surface, never a classic stack fallback.
  if (optString(optMap(templateConfig, 'container') ?? {}, 'displayType') ==
      'full_screen') {
    return null;
  }
  final layout = optMap(templateConfig, 'layout');
  if (layout == null || layout.isEmpty) return null;

  return NudgeConfig(
    surface: _surface(optMap(templateConfig, 'container')),
    content: _column(layout),
    designWidth: designWidth,
  );
}