expansionItems method

List<ExpansionPanelRadio> expansionItems(
  1. BuildContext context
)

Implementation

List<ExpansionPanelRadio> expansionItems(BuildContext context) {
  List<ExpansionPanelRadio> items = [];
  ListItemModel? itemModel;
  int index = 0;
  do {
    itemModel = widget.model.getItemModel(index++);
    if (itemModel != null) {
      var listItem = ListItemView(itemModel);
      Text? title;
      if (!isNullOrEmpty(itemModel.title)) {
        title = Text(itemModel.title!);
      } else if (isNullOrEmpty(itemModel.title)) {
        List<dynamic>? descendants =
            itemModel.findDescendantsOfExactType(TextModel);
        if (descendants.isNotEmpty) {
          int i = 0;
          while (i < descendants.length && descendants[i].value == null) {
            i++;
          }
          title = Text(
            descendants[i].value,
            style:
                TextStyle(color: Theme.of(context).colorScheme.onBackground),
          );
        }
      } else if (isNullOrEmpty(itemModel.title)) {
        title = Text(index.toString());
      }
      ListTile header = ListTile(title: title);
      var item = ExpansionPanelRadio(
          value: index,
          body: listItem,
          headerBuilder: (BuildContext context, bool isExpanded) => header,
          canTapOnHeader: true);
      items.add(item);
    }
  } while (itemModel != null);
  return items;
}