Repository: flutter
Issue: Reversed ListView range is not maintained when using RangeMaintainingScrollPhysics
Labels: c: new feature,framework,f: scrolling,has reproducible steps,P3,team-framework,triaged-framework,found in release: 3.24,found in release: 3.26

### Steps to reproduce

- Run the provided sample.
- Scroll to the top and notice that the range in the list view has changed to the size of the recently added list items, rather than maintaining the same range. For example, scroll to the top, where you see 'Item 0,' and wait for the next item to be added to the list view. When the new item is added, the list view automatically scrolls down to the size of newly added item, resulting in a change in the range.

### Expected results

As we are using `RangeMaintainingScrollPhysics `in the list view, the list should stay stable while scrolling, even when items are added dynamically.

### Actual results

The list view automatically scrolled down to the size of the newly added item.

![List view range maintaining issue](https://github.com/user-attachments/assets/09fce921-4fa6-4a34-a078-6c720c0fe4bb)


### Code sample

```dart
import 'dart:async';

import 'package:flutter/material.dart';

void main() {
  runApp(const MainApp());
}

class MainApp extends StatefulWidget {
  const MainApp({super.key});

  @override
  State<MainApp> createState() => _MainAppState();
}

class _MainAppState extends State<MainApp> {
  late List<String> _baseItems;
  final List<String> _loadingItems = <String>[];

  @override
  void initState() {
    _baseItems = List<String>.generate(10000, (index) => 'Item $index');
    Timer.periodic(const Duration(seconds: 1), (timer) {
      if (_baseItems.isEmpty) {
        timer.cancel();
        return;
      }

      setState(() {
        _loadingItems.add(_baseItems.removeAt(0));
      });
    });
    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        body: ListView.builder(
          reverse: true,
          physics: const RangeMaintainingScrollPhysics(),
          itemCount: _loadingItems.length,
          itemBuilder: (BuildContext context, int index) {
            return Padding(
              padding: const EdgeInsets.all(5.0),
              child: ListTile(
                title: Text('Item ${_loadingItems.length - index - 1}'),
                tileColor: Colors.blue[100],
              ),
            );
          },
        ),
      ),
    );
  }

  @override
  void dispose() {
    _baseItems.clear();
    _loadingItems.clear();
    super.dispose();
  }
}
```

### Flutter Doctor output

```console
Doctor summary (to see all details, run flutter doctor -v):
[√] Flutter (Channel stable, 3.24.1, on Microsoft Windows [Version 10.0.22621.4169], locale en-US)
[√] Windows Version (Installed version of Windows is version 10 or higher)
[!] Android toolchain - develop for Android devices (Android SDK version 34.0.0)
    X Android license status unknown.
      Run `flutter doctor --android-licenses` to accept the SDK licenses.
      See https://flutter.dev/to/windows-android-setup for more details.
[√] Chrome - develop for the web
[√] Visual Studio - develop Windows apps (Visual Studio Enterprise 2022 17.11.3)
[!] Android Studio (not installed)
[√] VS Code (version 1.93.0)
[√] Connected device (3 available)
[√] Network resources

! Doctor found issues in 2 categories.
```