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