Repository: flutter
Issue: In `AnimatedList`, AnimationController should forward when `_itemBuilder()` is called but not `insertItem()`
Labels: c: new feature,framework,has reproducible steps,P3,team-framework,triaged-framework,found in release: 3.22

### Steps to reproduce

See code example please.

### Expected results

When I scroll to items outside screen, their animation should start forwarding.




### Actual results

When I insert items into `AnimatedList`, their animations will forward immediately.
This causes when I scroll to those items outside screen, they have no animation, since AnimationControllers have disposed after animation duration.
https://github.com/flutter/flutter/blob/ddd6c8695084d6661574bf941b79e2eca252be58/packages/flutter/lib/src/widgets/animated_scroll_view.dart#L1135-L1137
What I wish is that when I scroll to other items, `_itemBuilder` will be called and their AnimationControllers should forward at this time.
https://github.com/flutter/flutter/blob/ddd6c8695084d6661574bf941b79e2eca252be58/packages/flutter/lib/src/widgets/animated_scroll_view.dart#L1076-L1092

### Code sample

<details open><summary>Code sample</summary>

```dart
import 'package:flutter/material.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatefulWidget {
  const MyApp({super.key});

  @override
  State<StatefulWidget> createState() => MyAppState();
}

class MyAppState extends State<MyApp> {
  final listKey = GlobalKey<AnimatedListState>();

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        body: SafeArea(
          child: AnimatedList(
            key: listKey,
            itemBuilder: buildItem,
          ),
        ),
        floatingActionButton: FloatingActionButton(
          onPressed: () {
            listKey.currentState!.insertAllItems(0, 100);
          },
        ),
      ),
    );
  }

  Widget buildItem(
      BuildContext context, int index, Animation<double> animation) {
    print(index);
    return KeepAliveWrapper(
      child: FadeTransition(
        opacity: animation,
        child: Container(
          height: 80,
          color: Colors.orange,
          child: Center(child: Text('Item $index')),
        ),
      ),
    );
  }
}

class KeepAliveWrapper extends StatefulWidget {
  const KeepAliveWrapper({
    super.key,
    this.keepAlive = true,
    required this.child,
  });

  final bool keepAlive;
  final Widget child;

  @override
  KeepAliveWrapperState createState() => KeepAliveWrapperState();
}

class KeepAliveWrapperState extends State<KeepAliveWrapper>
    with AutomaticKeepAliveClientMixin {
  @override
  Widget build(BuildContext context) {
    super.build(context);
    return widget.child;
  }

  @override
  void didUpdateWidget(covariant KeepAliveWrapper oldWidget) {
    if (oldWidget.keepAlive != widget.keepAlive) {
      updateKeepAlive();
    }
    super.didUpdateWidget(oldWidget);
  }

  @override
  bool get wantKeepAlive => widget.keepAlive;
}

```

</details>


### Screenshots or Video

<details open>
<summary>Screenshots / Video demonstration</summary>

**Expected:** When I scroll to those items outside screen, they start fading in.
https://github.com/flutter/flutter/assets/73378246/a8531a9f-636e-44b4-91f8-12147041b3ef


**In fact:** Animations have already completed.
https://github.com/flutter/flutter/assets/73378246/4b6343cc-6193-4681-a5e8-3ea2a53d1448

</details>


### Logs

<details open><summary>Logs</summary>

```console
[Paste your logs here]
```

</details>


### Flutter Doctor output

<details open><summary>Doctor output</summary>

```console
[Paste your output here]
```

</details>