parse method
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,
);
}