[video_player] code excerpts in README (#6296)

* update README to pull code excerpts from basic

* update version to 2.4.6

* new line

* fix dart issues

* update to match snippet

* re-remove video_player from exclusion list

* add .

* sync readme to snippet

* Roll Flutter from 663bb66bfd90 to 723609bff1f7 (29 revisions) (#6297)

* Roll Flutter from 723609bff1f7 to 9d78b2fe2a03 (6 revisions) (#6298)

Co-authored-by: engine-flutter-autoroll <engine-flutter-autoroll@skia.org>
diff --git a/packages/video_player/video_player/CHANGELOG.md b/packages/video_player/video_player/CHANGELOG.md
index d593dfc..7a47cce 100644
--- a/packages/video_player/video_player/CHANGELOG.md
+++ b/packages/video_player/video_player/CHANGELOG.md
@@ -1,5 +1,6 @@
-## NEXT
+## 2.4.7
 
+* Updates README via code excerpts.
 * Fixes violations of new analysis option use_named_constants.
 
 ## 2.4.6
diff --git a/packages/video_player/video_player/README.md b/packages/video_player/video_player/README.md
index c870688..de10f1e 100644
--- a/packages/video_player/video_player/README.md
+++ b/packages/video_player/video_player/README.md
@@ -1,3 +1,5 @@
+<?code-excerpt path-base="excerpts/packages/video_player_example"?>
+
 # Video Player plugin for Flutter
 
 [![pub package](https://img.shields.io/pub/v/video_player.svg)](https://pub.dev/packages/video_player)
@@ -50,19 +52,23 @@
 
 ## Example
 
+<?code-excerpt "basic.dart (basic-example)"?>
 ```dart
-import 'package:video_player/video_player.dart';
 import 'package:flutter/material.dart';
+import 'package:video_player/video_player.dart';
 
-void main() => runApp(VideoApp());
+void main() => runApp(const VideoApp());
 
+/// Stateful widget to fetch and then display video content.
 class VideoApp extends StatefulWidget {
+  const VideoApp({Key? key}) : super(key: key);
+
   @override
   _VideoAppState createState() => _VideoAppState();
 }
 
 class _VideoAppState extends State<VideoApp> {
-  VideoPlayerController _controller;
+  late VideoPlayerController _controller;
 
   @override
   void initState() {
diff --git a/packages/video_player/video_player/example/build.excerpt.yaml b/packages/video_player/video_player/example/build.excerpt.yaml
new file mode 100644
index 0000000..c9a9c71
--- /dev/null
+++ b/packages/video_player/video_player/example/build.excerpt.yaml
@@ -0,0 +1,20 @@
+targets:
+  $default:
+    sources:
+      include:
+        - lib/**
+        - android/app/src/main/**
+        # Some default includes that aren't really used here but will prevent
+        # false-negative warnings:
+        - $package$
+        - lib/$lib$
+      exclude:
+        - '**/.*/**'
+        - '**/build/**'
+        - 'android/app/src/main/res/**'
+    builders:
+      code_excerpter|code_excerpter:
+        enabled: true
+        generate_for:
+          - '**/*.dart'
+          - android/**/*.xml
diff --git a/packages/video_player/video_player/example/lib/basic.dart b/packages/video_player/video_player/example/lib/basic.dart
new file mode 100644
index 0000000..169f1cd
--- /dev/null
+++ b/packages/video_player/video_player/example/lib/basic.dart
@@ -0,0 +1,73 @@
+// Copyright 2013 The Flutter Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// This file is used to extract code samples for the README.md file.
+// Run update-excerpts if you modify this file.
+
+// ignore_for_file: library_private_types_in_public_api, public_member_api_docs
+
+// #docregion basic-example
+import 'package:flutter/material.dart';
+import 'package:video_player/video_player.dart';
+
+void main() => runApp(const VideoApp());
+
+/// Stateful widget to fetch and then display video content.
+class VideoApp extends StatefulWidget {
+  const VideoApp({Key? key}) : super(key: key);
+
+  @override
+  _VideoAppState createState() => _VideoAppState();
+}
+
+class _VideoAppState extends State<VideoApp> {
+  late VideoPlayerController _controller;
+
+  @override
+  void initState() {
+    super.initState();
+    _controller = VideoPlayerController.network(
+        'https://flutter.github.io/assets-for-api-docs/assets/videos/bee.mp4')
+      ..initialize().then((_) {
+        // Ensure the first frame is shown after the video is initialized, even before the play button has been pressed.
+        setState(() {});
+      });
+  }
+
+  @override
+  Widget build(BuildContext context) {
+    return MaterialApp(
+      title: 'Video Demo',
+      home: Scaffold(
+        body: Center(
+          child: _controller.value.isInitialized
+              ? AspectRatio(
+                  aspectRatio: _controller.value.aspectRatio,
+                  child: VideoPlayer(_controller),
+                )
+              : Container(),
+        ),
+        floatingActionButton: FloatingActionButton(
+          onPressed: () {
+            setState(() {
+              _controller.value.isPlaying
+                  ? _controller.pause()
+                  : _controller.play();
+            });
+          },
+          child: Icon(
+            _controller.value.isPlaying ? Icons.pause : Icons.play_arrow,
+          ),
+        ),
+      ),
+    );
+  }
+
+  @override
+  void dispose() {
+    super.dispose();
+    _controller.dispose();
+  }
+}
+// #enddocregion basic-example
diff --git a/packages/video_player/video_player/example/pubspec.yaml b/packages/video_player/video_player/example/pubspec.yaml
index e6b51f9..7b6aa09 100644
--- a/packages/video_player/video_player/example/pubspec.yaml
+++ b/packages/video_player/video_player/example/pubspec.yaml
@@ -18,6 +18,7 @@
     path: ../
 
 dev_dependencies:
+  build_runner: ^2.1.10
   flutter_driver:
     sdk: flutter
   flutter_test:
diff --git a/packages/video_player/video_player/pubspec.yaml b/packages/video_player/video_player/pubspec.yaml
index c9d5fc5..7e2df60 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.6
+version: 2.4.7
 
 environment:
   sdk: ">=2.14.0 <3.0.0"
diff --git a/script/configs/temp_exclude_excerpt.yaml b/script/configs/temp_exclude_excerpt.yaml
index 9f14bf2..c59983e 100644
--- a/script/configs/temp_exclude_excerpt.yaml
+++ b/script/configs/temp_exclude_excerpt.yaml
@@ -18,7 +18,6 @@
 - plugin_platform_interface
 - quick_actions/quick_actions
 - shared_preferences/shared_preferences
-- video_player/video_player
 - webview_flutter/webview_flutter
 - webview_flutter_android
 - webview_flutter_web