Repository: flutter
Issue: Dragging scrollbar by mouse sends notifications incorrectly/too often
Labels: framework,f: scrolling,a: desktop,a: mouse,has reproducible steps,P2,team-framework,triaged-framework,found in release: 3.16,found in release: 3.17

### Steps to reproduce

Flutter version: 3.13.9

There are 2 issues here.

First,
In Windows, when dragging scrollbar by mouse, 
the `NotificationListener` will receive 3 notification (ScrollStartNotification, ScrollUpdateNotification, and ScrollEndNotification)
each time when scrollOffset changed, even if the mouse didn't mouseUp yet.

Second,
the `notification.metrics.pixels` of `ScrollStartNotification` and `ScrollUpdateNotification` are the same,
and it is hard for app to detect how many pixel changes at this time.

By the way,
about second issue,
I tried to move forcePixels() to the next line of didStartScroll() in the ScrollPositionWithSingleContext.jumpTo(),
and it works.

### Expected results

[log] notification.runtimeType: ScrollStartNotification, pixels: 0  <-- should be old value
[log] notification.runtimeType: ScrollUpdateNotification, pixels: 6.682297772567386
[log] notification.runtimeType: ScrollEndNotification, pixels: 6.682297772567386
[log] notification.runtimeType: ScrollStartNotification, pixels: 6.682297772567386 <-- should be old value
[log] notification.runtimeType: ScrollUpdateNotification, pixels: 20.04689331770216
[log] notification.runtimeType: ScrollEndNotification, pixels: 20.04689331770216
[log] notification.runtimeType: ScrollStartNotification, pixels: 20.04689331770216 <-- should be old value
[log] notification.runtimeType: ScrollUpdateNotification, pixels: 26.729191090269666
[log] notification.runtimeType: ScrollEndNotification, pixels: 26.729191090269666

### Actual results

[log] notification.runtimeType: ScrollStartNotification, pixels: 6.682297772567386
[log] notification.runtimeType: ScrollUpdateNotification, pixels: 6.682297772567386
[log] notification.runtimeType: ScrollEndNotification, pixels: 6.682297772567386
[log] notification.runtimeType: ScrollStartNotification, pixels: 20.04689331770216
[log] notification.runtimeType: ScrollUpdateNotification, pixels: 20.04689331770216
[log] notification.runtimeType: ScrollEndNotification, pixels: 20.04689331770216
[log] notification.runtimeType: ScrollStartNotification, pixels: 26.729191090269666
[log] notification.runtimeType: ScrollUpdateNotification, pixels: 26.729191090269666
[log] notification.runtimeType: ScrollEndNotification, pixels: 26.729191090269666

### Code sample

<details><summary>Code sample</summary>

```dart
import 'dart:developer';
import 'package:flutter/material.dart';
void main() => runApp(const MyApp());
class MyApp extends StatefulWidget {
  const MyApp({super.key});
  @override
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  @override
  Widget build(BuildContext context) {
    var child = NotificationListener<ScrollNotification>(
        onNotification: (notification) {
          log("notification.runtimeType: ${notification.runtimeType}, pixels: ${notification.metrics.pixels}");
          return false;
        },
        child: ListView.builder(
          itemCount: 300,
          itemBuilder: (_, index) => Text("Item $index"),
        ),
    );

    return MaterialApp(
      home: Scaffold(body: child),
    );
  }
}
```

</details>


### Screenshots or Video

_No response_

### Logs

_No response_

### Flutter Doctor output

c:\flutter>flutter doctor -v
[!] Flutter (Channel stable, 3.13.9, on Microsoft Windows [版本 10.0.22000.2176], locale zh-TW)
    • Flutter version 3.13.9 on channel stable at C:\flutter
    ! Warning: `dart` on your path resolves to C:\Program Files\Dart\dart-sdk\bin\dart.exe, which is not inside your
      current Flutter SDK checkout at C:\flutter. Consider adding C:\flutter\bin to the front of your path.
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision d211f42860 (3 weeks ago), 2023-10-25 13:42:25 -0700
    • Engine revision 0545f8705d
    • Dart version 3.1.5
    • DevTools version 2.25.0
    • If those were intentional, you can disregard the above warnings; however it is recommended to use "git" directly
      to perform update checks and upgrades.

[√] Windows Version (Installed version of Windows is version 10 or higher)

[√] Android toolchain - develop for Android devices (Android SDK version 33.0.0)
    • Android SDK at C:\Users\jakky\AppData\Local\Android\sdk
    • Platform android-33, build-tools 33.0.0
    • Java binary at: C:\Program Files\Android\Android Studio\jre\bin\java
    • Java version OpenJDK Runtime Environment (build 11.0.12+7-b1504.28-7817840)
    • All Android licenses accepted.

[√] Chrome - develop for the web
    • Chrome at C:\Program Files\Google\Chrome\Application\chrome.exe

[√] Visual Studio - develop Windows apps (Visual Studio Community 2022 17.5.0)
    • Visual Studio at C:\Program Files\Microsoft Visual Studio\2022\Community
    • Visual Studio Community 2022 version 17.5.33414.496
    • Windows 10 SDK version 10.0.19041.0

[√] Android Studio (version 2021.2)
    • Android Studio at C:\Program Files\Android\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 11.0.12+7-b1504.28-7817840)

[√] VS Code, 64-bit edition (version 1.84.2)
    • VS Code at C:\Program Files\Microsoft VS Code
    • Flutter extension version 3.76.0

[√] Connected device (3 available)
    • Windows (desktop) • windows • windows-x64    • Microsoft Windows [版本 10.0.22000.2176]
    • Chrome (web)      • chrome  • web-javascript • Google Chrome 119.0.6045.159
    • Edge (web)        • edge    • web-javascript • Microsoft Edge 119.0.2151.58
    ! Device emulator-5562 is offline.

[√] Network resources
    • All expected network resources are available.

! Doctor found issues in 1 category.

c:\flutter>