Repository: flutter
Issue: SelectableText.rich breaks selection when scrolling during selection
Labels: framework,f: material design,a: typography,has reproducible steps,P2,found in release: 2.2,team-design,triaged-design

## Steps to Reproduce
(1) Paste the following into main.dart
(2) run for Linux or Web
(3) start a selection and scroll (e.g. with trackpad) while keeping the selection active (i.e. left mouse stays pressed)

```dart
import 'package:flutter/material.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      theme: ThemeData.dark(),
      home: Scaffold(
        body: SingleChildScrollView(
          child: Column(
            crossAxisAlignment: CrossAxisAlignment.stretch,
            children: [
              SelectableText.rich(
                TextSpan(
                  children: List.generate(
                    100,
                    (index) => TextSpan(
                      text: "[$index] This is a line\n",
                    ),
                  ),
                ),
              ),
            ],
          ),
        ),
      ),
    );
  }
}

```
**Expected results:**
The start of the selection stays the same and the end expands to the new cursor position after scrolling.

**Actual results:**
One of two things can happen

(A)
The list scrolls back to the end of the previous visible section.
The selection reaches only to that point.

(B)
The start of the selection jumps and the selection reaches to the new cursor location:
![2021042420:13:46_screenshot_sel](https://user-images.githubusercontent.com/24209580/115968900-4e94e880-a53a-11eb-84a7-1a41dca9099d.png)



<details>

doctor:
```
$ flutter doctor -v
[✓] Flutter (Channel master, 2.2.0-11.0.pre.274, on Linux, locale en_US.UTF-8)
    • Flutter version 2.2.0-11.0.pre.274 at /home/omni/repos/flutter_web/flutter
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision d1f73a1065 (14 hours ago), 2021-04-24 00:44:02 -0400
    • Engine revision eba9efd1c3
    • Dart version 2.14.0 (build 2.14.0-37.0.dev)

[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.0-rc2)
    • Android SDK at /home/omni/Android/Sdk
    • Platform android-30, build-tools 30.0.0-rc2
    • ANDROID_HOME = /home/omni/Android/Sdk
    • ANDROID_SDK_ROOT = /home/omni/Android/Sdk
    • Java binary at: /opt/AppDev/SDK/android-studio/jre/bin/java
    • Java version OpenJDK Runtime Environment (build 1.8.0_202-release-1483-b49-5587405)
    • All Android licenses accepted.

[✓] Chrome - develop for the web
    • CHROME_EXECUTABLE = /snap/bin/chromium

[✓] Linux toolchain - develop for Linux desktop
    • clang version 6.0.0-1ubuntu2 (tags/RELEASE_600/final)
    • cmake version 3.10.2
    • ninja version 1.8.2
    • pkg-config version 0.29.1

[✓] Android Studio (version 3.5)
    • Android Studio at /opt/AppDev/SDK/android-studio
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 1.8.0_202-release-1483-b49-5587405)

[✓] Connected device (2 available)
    • Linux (desktop) • linux  • linux-x64      • Linux
    • Chrome (web)    • chrome • web-javascript • Chromium 90.0.4430.85 snap

• No issues found!

```

</details>