genBlocks method

dynamic genBlocks(
  1. Context context,
  2. List<Component> blocks
)

This will resolve

Implementation

genBlocks(Context context, List<Component> blocks) {
  var generated = List.of(blocks
      .map((c) => c.generate(context))
      .map((r) => r is XmlBuilder ? r.buildFragment() : throw Exception("Type should be XmlBuilder!")));

  var rootElement = generated.removeAt(0);

  generated = List.of(generated.map((x) {
    var builder = XmlBuilder();
    builder.element("next", nest: x);
    return builder.buildFragment();
  }));

  generated.fold(rootElement.firstChild, (previousValue, element) {
    (previousValue as XmlNode).children.add(element);
    return previousValue.findElements("next").last.firstChild;
  }); // hacky ik

  return rootElement;
}