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.
Source
static List<Widget> ensureUniqueKeysForList(Iterable<Widget> items, { int baseIndex: 0 }) {
if (items == null || items.isEmpty)
return items;
List<Widget> itemsWithUniqueKeys = <Widget>[];
int itemIndex = baseIndex;
for (Widget item in items) {
itemsWithUniqueKeys.add(new KeyedSubtree.wrap(item, itemIndex));
itemIndex += 1;
}
assert(!debugItemsHaveDuplicateKeys(itemsWithUniqueKeys));
return itemsWithUniqueKeys;
}