getItemModel method
Implementation
ListItemModel? getItemModel(int index) {
// fixed list?
if (isNullOrEmpty(datasource)) {
return (index < items.length) ? items[index] : null;
}
// item model exists?
if (data == null) return null;
if (data.length < index + 1) return null;
if (items.containsKey(index)) return items[index];
if (index.isNegative || data.length < index) return null;
// build item model
var model = ListItemModel.fromXml(this, prototype, data: data[index]);
if (model != null) {
// set the index
model.index = index;
// set the selected data
if (model.selected == true) {
// this must be done after the build
WidgetsBinding.instance.addPostFrameCallback((_) => selected = model.data);
}
// register listener to dirty field
if (model.dirtyObservable != null) {
model.dirtyObservable!.registerListener(onDirtyListener);
}
// save model
items[index] = model;
}
return model;
}