[video_player] Expose `VideoScrubber` so it can be used to create custom video timelines (#6680)

* Expose `VideoScrubber` so it can be used to make custom video timelines

* Added documentation

* Updated version

* Cleanup

* Formatting

* Update CHANGELOG.md
diff --git a/packages/video_player/video_player/CHANGELOG.md b/packages/video_player/video_player/CHANGELOG.md
index c916946..fdf7348 100644
--- a/packages/video_player/video_player/CHANGELOG.md
+++ b/packages/video_player/video_player/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 2.5.0
+
+* Exposes `VideoScrubber` so it can be used to make custom video progress indicators
+
 ## 2.4.10
 
 * Adds compatibilty with version 6.0 of the platform interface.
diff --git a/packages/video_player/video_player/lib/video_player.dart b/packages/video_player/video_player/lib/video_player.dart
index 76f865a..f27c342 100644
--- a/packages/video_player/video_player/lib/video_player.dart
+++ b/packages/video_player/video_player/lib/video_player.dart
@@ -835,20 +835,29 @@
   final Color backgroundColor;
 }
 
-class _VideoScrubber extends StatefulWidget {
-  const _VideoScrubber({
+/// A scrubber to control [VideoPlayerController]s
+class VideoScrubber extends StatefulWidget {
+  /// Create a [VideoScrubber] handler with the given [child].
+  ///
+  /// [controller] is the [VideoPlayerController] that will be controlled by
+  /// this scrubber.
+  const VideoScrubber({
+    Key? key,
     required this.child,
     required this.controller,
-  });
+  }) : super(key: key);
 
+  /// The widget that will be displayed inside the gesture detector.
   final Widget child;
+
+  /// The [VideoPlayerController] that will be controlled by this scrubber.
   final VideoPlayerController controller;
 
   @override
-  _VideoScrubberState createState() => _VideoScrubberState();
+  State<VideoScrubber> createState() => _VideoScrubberState();
 }
 
-class _VideoScrubberState extends State<_VideoScrubber> {
+class _VideoScrubberState extends State<VideoScrubber> {
   bool _controllerWasPlaying = false;
 
   VideoPlayerController get controller => widget.controller;
@@ -1013,7 +1022,7 @@
       child: progressIndicator,
     );
     if (widget.allowScrubbing) {
-      return _VideoScrubber(
+      return VideoScrubber(
         controller: controller,
         child: paddedProgressIndicator,
       );
diff --git a/packages/video_player/video_player/pubspec.yaml b/packages/video_player/video_player/pubspec.yaml
index a049f0b..0f37c03 100644
--- a/packages/video_player/video_player/pubspec.yaml
+++ b/packages/video_player/video_player/pubspec.yaml
@@ -3,7 +3,7 @@
   widgets on Android, iOS, and web.
 repository: https://github.com/flutter/plugins/tree/main/packages/video_player/video_player
 issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+video_player%22
-version: 2.4.10
+version: 2.5.0
 
 environment:
   sdk: ">=2.14.0 <3.0.0"