expansionItems method
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;
}