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