getItemModel method

ListItemModel? getItemModel(
  1. int index
)

Implementation

ListItemModel? getItemModel(int index)
{
  // fixed list?
  if (S.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;
}