expand method
Iterable<(dynamic, Widget)>
expand(
- BuildContext buildContext,
- TypeRegistry typeRegistry,
- Environment environment
Implementation
Iterable<(dynamic, Widget)> expand(BuildContext buildContext, TypeRegistry typeRegistry, Environment environment) {
final widgetContext = WidgetContextScope.of(buildContext);
// Compile the binding once
Eval? compiledCall;
if (context.isNotEmpty) {
compiledCall = ActionCompiler.instance.compile(context, context: widgetContext.typeDescriptor);
}
// Evaluate list at runtime
List<dynamic> items = compiledCall?.eval(widgetContext.instance, EvalContext(instance: widgetContext.instance, variables: {})) ?? const [];
if (children.isEmpty) return [];
final templateChild = children[0];
return items.map<(dynamic, Widget)>((item) {
return (item, WidgetContextScope(
contextValue: WidgetContext(instance: item),
child: DynamicWidget(
model: templateChild,
meta: typeRegistry[templateChild.type],
),
));
});
}