createWidgets method

List<Widget> createWidgets(
  1. UISchemaElement schema,
  2. BuildContext context,
  3. List<Widget> widgets
)

Implementation

List<Widget> createWidgets(
  UISchemaElement schema,
  BuildContext context,
  List<Widget> widgets,
) {
  if (schema.type == ElementType.Label.name) {
    widgets.add(
      ListTile(
        title: Text(
          schema.text!,
          style: Theme.of(context).textTheme.titleMedium,
        ),
      ),
    );
  } else if (schema.type == ElementType.Control.name) {
    widgets.add(getControl(schema, dataSchema, context));
  } else if (schema.type == ElementType.VerticalLayout.name ||
      schema.type == ElementType.HorizontalLayout.name ||
      schema.type == ElementType.Group.name) {
    if (schema.label != null) {
      widgets.add(
        ListTile(
          title: Text(
            schema.label!,
            style: Theme.of(context).textTheme.labelLarge,
          ),
          visualDensity: VisualDensity(
            horizontal: VisualDensity.minimumDensity,
            vertical: VisualDensity.minimumDensity,
          ),
        ),
      );
    }

    for (var element in schema.elements!) {
      List<Widget> current = createWidgets(element, context, []);
      widgets.addAll(current);
    }
  } else {
    widgets.add(Text("Unknown uiSchema type"));
  }

  return widgets;
}