Repository: flutter
Issue: ReorderableListView-like widget in cupertino
Labels: c: new feature,framework,f: cupertino,c: proposal,team-design,triaged-design

<!-- Thank you for using Flutter!

     If you are looking for support, please check out our documentation
     or consider asking a question on Stack Overflow:
      * https://flutter.dev/
      * https://api.flutter.dev/
      * https://stackoverflow.com/questions/tagged/flutter?sort=frequent

     If you have found a bug or if our documentation doesn't have an answer
     to what you're looking for, then fill out the template below. Please read
     our guide to filing a bug first: https://flutter.dev/docs/resources/bug-reports
-->

## Use case

Consider the following Material app:

```dart
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> {
  final List<String> _items = [for (var i = 1; i < 100; i++) 'Item $i'];

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        body: ReorderableListView(
          children: <Widget>[
            for (var i = 0; i < _items.length; i++)
              ListTile(
                key: Key('$i'),
                title: Text(_items[i]),
                onTap: () {
                  setState(() {
                    _items.remove(_items[i]);
                  });
                },
              ),
          ],
          onReorder: (int oldIndex, int newIndex) {
            setState(() {
              if (oldIndex < newIndex) {
                newIndex -= 1;
              }
              final String item = _items.removeAt(oldIndex);
              _items.insert(newIndex, item);
            });
          },
        ),
      ),
    );
  }
}
```
This creates a nice scrollable and reorderable list in material styling. There appears to be no way of accomplishing the same using cupertino.
<!--
     Please tell us the problem you are running into that led to you wanting
     a new feature.

     Is your feature request related to a problem? Please give a clear and
     concise description of what the problem is.

     Describe the alternative solutions you've considered. Is there a package
     on pub.dev/flutter that already solves this?
-->

## Proposal

I am thinking of something along these lines:

```dart
import 'package:flutter/cupertino.dart';

void main() {
  runApp(const MainApp());
}

class MainApp extends StatefulWidget {
  const MainApp({super.key});

  @override
  State<MainApp> createState() => _MainAppState();
}

class _MainAppState extends State<MainApp> {
  final List<String> _items = [for (var i = 1; i < 100; i++) 'Item $i'];

  @override
  Widget build(BuildContext context) {
    return CupertinoApp(
      home: Expanded(
        child: CustomScrollView(
          semanticChildCount: _items.length,
          slivers: <Widget>[
            SliverSafeArea(
              top: false,
              minimum: const EdgeInsets.only(top: 0),
              sliver: SliverToBoxAdapter(
                child: CupertinoReorderableListSection(
                  header: const Text('Items'),
                  children: [
                    for (var i = 0; i < _items.length; i++)
                      CupertinoListTile(
                        key: Key('$i'),
                        title: Text(_items[i]),
                        onTap: () {
                          setState(() {
                            _items.remove(_items[i]);
                          });
                        },
                      ),
                  ],
                  onReorder: (int oldIndex, int newIndex) {
                    setState(() {
                      if (oldIndex < newIndex) {
                        newIndex -= 1;
                      }
                      final String item = _items.removeAt(oldIndex);
                      _items.insert(newIndex, item);
                    });
                  },
                ),
              ),
            ),
          ],
        ),
      ),
    );
  }
}
```

`CupertinoReorderableListSection` is what I think Flutter is missing.

An example of what a reorderable and scrollable list looks like in iOS is iPhone's Reminders app.
<!--
     Briefly but precisely describe what you would like Flutter to be able to do.

     Consider attaching something showing what you are imagining:
      * images
      * videos
      * code samples

     Does this have to be provided by Flutter directly, or can it be provided
     by a package on pub.dev/flutter? If so, maybe consider implementing and
     publishing such a package rather than filing a bug.
-->