getItemModel method
Implementation
ListItemModel? getItemModel(int index) {
// fixed list?
if (isNullOrEmpty(datasource)) {
return (index < items.length) ? items[index] : null;
}
// item model exists?
if (_dataset == null) return null;
var list = _dataset!;
if (list.length < (index + 1)) return null;
if (items.containsKey(index)) return items[index];
if (index.isNegative || list.length < index) return null;
// build item model
var model = ListItemModel.fromXml(this, prototype, data: list[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((_) => data = model.data);
}
// register listener to dirty field
if (model.dirtyObservable != null) {
model.dirtyObservable!.registerListener(onDirtyListener);
}
// save model
items[index] = model;
}
return model;
}