Repository: flutter
Issue: Losing state when using `AutomaticKeepAliveClientMixin` and `ListView.builder` 
Labels: framework,f: scrolling,c: dataloss,has reproducible steps,P2,found in release: 2.5,found in release: 2.6,team-framework,triaged-framework

## Steps to Reproduce
1. Use a ListView.builder to create a list of Stateful items with unique ValueKeys 
2. Add a new item somewhere in the list
3. Observe as all items below the new item, lose their state. 

I would expect that, since I am giving the items the same ValueKey, that their state would persist even if their place in the list changed, but state seems to always be lost if index changes. 

https://user-images.githubusercontent.com/736973/142272214-89d616da-f6a5-4693-bbd8-8d716a95981a.mp4

Switching to `ListView.children` or `SliverChildListDelegate` it works as expected.

https://user-images.githubusercontent.com/736973/142274097-e3566341-fb2e-4edf-9bce-3ab72b2051aa.mp4


# Code Sample:
```dart

class KeepAliveBuilderIssue extends StatefulWidget {
  const KeepAliveBuilderIssue({Key? key}) : super(key: key);

  @override
  State<KeepAliveBuilderIssue> createState() => _KeepAliveBuilderIssueState();
}

class _KeepAliveBuilderIssueState extends State<KeepAliveBuilderIssue> {
  int _nextItemId = 0;
  int createRandomListItem() => _nextItemId++;
  late final List<int> items = List.generate(100, (_) => createRandomListItem());
  @override
  Widget build(BuildContext context) {
    return Column(
      children: [
        TextButton(
          onPressed: () {
            setState(() => items.insert(2, createRandomListItem()));
          },
          child: const Text('Add item at index 2'),
        ),
        Expanded(
          child: ListView.builder(
            itemCount: items.length,
            itemBuilder: (_, index) => _StatefulListItem(key: ValueKey(items[index]), id: '${items[index]}'),
          ),
        ),
      ],
    );
  }
}

class _StatefulListItem extends StatefulWidget {
  const _StatefulListItem({Key? key, required this.id}) : super(key: key);
  final String id;

  @override
  State<_StatefulListItem> createState() => _StatefulListItemState();
}

class _StatefulListItemState extends State<_StatefulListItem> with AutomaticKeepAliveClientMixin {
  int _ticks = 0;
  late Timer _timer;
  @override
  void initState() {
    _timer = Timer.periodic(const Duration(seconds: 1), (timer) => setState(() => _ticks++));
    super.initState();
  }

  @override
  void dispose() {
    _timer.cancel();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return Container(height: 30, child: Text('id: ${widget.id}, ticks: $_ticks', style: TextStyle(fontSize: 24)));
  }

  @override
  bool get wantKeepAlive => true;
}
```

```
[√] Flutter (Channel dev, 2.6.0-11.0.pre, on Microsoft Windows [Version 10.0.19042.685], locale en-US)
    • Flutter version 2.6.0-11.0.pre at C:\_dev\sdks\flutter
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 4b330ddbed (9 weeks ago), 2021-09-16 17:29:58 -0700
    • Engine revision 5b81c6d615
    • Dart version 2.15.0 (build 2.15.0-116.0.dev)
```