ensureUniqueKeysForList method

List<Widget> ensureUniqueKeysForList (Iterable<Widget> items, { int baseIndex: 0 })

Wrap each item in a KeyedSubtree whose key is based on the item's existing key or the sum of its list index and baseIndex.

Implementation

static List<Widget> ensureUniqueKeysForList(Iterable<Widget> items, { int baseIndex = 0 }) {
  if (items == null || items.isEmpty)
    return items;

  final List<Widget> itemsWithUniqueKeys = <Widget>[];
  int itemIndex = baseIndex;
  for (Widget item in items) {
    itemsWithUniqueKeys.add(KeyedSubtree.wrap(item, itemIndex));
    itemIndex += 1;
  }

  assert(!debugItemsHaveDuplicateKeys(itemsWithUniqueKeys));
  return itemsWithUniqueKeys;
}