create method

  1. @override
Component? create(
  1. Node node,
  2. NodesBuilder builder
)
override

Creates a component for the given node, or returns null.

Implementation

@override
Component? create(Node node, NodesBuilder builder) {
  if (node is ElementNode && node.tag == 'Tabs') {
    var tabs = node.children?.whereType<ElementNode>().where((n) => n.tag == 'TabItem') ?? [];
    if (tabs.isEmpty) {
      print("[WARNING] Tabs component requires at least one TabItem child.");
    }

    return _Tabs(
      defaultValue: node.attributes['defaultValue'],
      items: [
        for (var tab in tabs)
          TabItem(
            label: tab.attributes['label'] ?? '',
            value: tab.attributes['value'] ?? '',
            child: builder.build(tab.children),
          ),
      ],
    );
  }
  return null;
}