invalidateItemsNodes method

void invalidateItemsNodes({
  1. required Map<Key, FocusNode> newItems,
  2. required TvNavigationMenuSelectionEntry onSelectedItemRemoved(),
})

Implementation

void invalidateItemsNodes({
  required Map<Key, FocusNode> newItems,
  required TvNavigationMenuSelectionEntry Function() onSelectedItemRemoved,
}) {
  final selectedKey = selectedEntry.key;

  itemsNodes.removeWhere((key, node) {
    final isRemoved = !newItems.containsKey(key);

    if (isRemoved) {
      node.dispose();

      if (key == selectedKey) {
        select(onSelectedItemRemoved());
      }
    }

    return isRemoved;
  });

  newItems.forEach((key, node) => itemsNodes.putIfAbsent(key, () => node));
}