getItemModel method

ListItemModel? getItemModel(
  1. int index
)

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