[video_player] Update web analysis options (#4788)

diff --git a/packages/video_player/video_player_web/CHANGELOG.md b/packages/video_player/video_player_web/CHANGELOG.md
index 246cd22..1cd428c 100644
--- a/packages/video_player/video_player_web/CHANGELOG.md
+++ b/packages/video_player/video_player_web/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 2.0.7
+
+* Internal code cleanup for stricter analysis options.
+
 ## 2.0.6
 
 * Removes dependency on `meta`.
diff --git a/packages/video_player/video_player_web/analysis_options.yaml b/packages/video_player/video_player_web/analysis_options.yaml
deleted file mode 100644
index 5aeb4e7..0000000
--- a/packages/video_player/video_player_web/analysis_options.yaml
+++ /dev/null
@@ -1 +0,0 @@
-include: ../../../analysis_options_legacy.yaml
diff --git a/packages/video_player/video_player_web/example/integration_test/video_player_web_test.dart b/packages/video_player/video_player_web/example/integration_test/video_player_web_test.dart
index 2a830c9..97b0364 100644
--- a/packages/video_player/video_player_web/example/integration_test/video_player_web_test.dart
+++ b/packages/video_player/video_player_web/example/integration_test/video_player_web_test.dart
@@ -27,7 +27,7 @@
                   'https://flutter.github.io/assets-for-api-docs/assets/videos/bee.mp4',
             ),
           )
-          .then((textureId) => textureId!);
+          .then((int? textureId) => textureId!);
     });
 
     testWidgets('can init', (WidgetTester tester) async {
@@ -98,14 +98,14 @@
 
     testWidgets('throws PlatformException when playing bad media',
         (WidgetTester tester) async {
-      int videoPlayerId = (await VideoPlayerPlatform.instance.create(
+      final int videoPlayerId = (await VideoPlayerPlatform.instance.create(
         DataSource(
             sourceType: DataSourceType.network,
             uri:
                 'https://flutter.github.io/assets-for-api-docs/assets/videos/_non_existent_video.mp4'),
       ))!;
 
-      Stream<VideoEvent> eventStream =
+      final Stream<VideoEvent> eventStream =
           VideoPlayerPlatform.instance.videoEventsFor(videoPlayerId);
 
       // Mute video to allow autoplay (See https://goo.gl/xX8pDD)
@@ -139,7 +139,7 @@
       expect(
         VideoPlayerPlatform.instance.seekTo(
           await textureId,
-          Duration(seconds: 1),
+          const Duration(seconds: 1),
         ),
         completes,
       );
diff --git a/packages/video_player/video_player_web/example/lib/main.dart b/packages/video_player/video_player_web/example/lib/main.dart
index e1a38dc..341913a 100644
--- a/packages/video_player/video_player_web/example/lib/main.dart
+++ b/packages/video_player/video_player_web/example/lib/main.dart
@@ -17,7 +17,7 @@
 class _MyAppState extends State<MyApp> {
   @override
   Widget build(BuildContext context) {
-    return Directionality(
+    return const Directionality(
       textDirection: TextDirection.ltr,
       child: Text('Testing... Look at the console output for results!'),
     );
diff --git a/packages/video_player/video_player_web/example/pubspec.yaml b/packages/video_player/video_player_web/example/pubspec.yaml
index 4ec938b..bc70b7d 100644
--- a/packages/video_player/video_player_web/example/pubspec.yaml
+++ b/packages/video_player/video_player_web/example/pubspec.yaml
@@ -6,15 +6,15 @@
   flutter: ">=2.2.0"
 
 dependencies:
-  video_player_web:
-    path: ../
   flutter:
     sdk: flutter
+  video_player_web:
+    path: ../
 
 dev_dependencies:
-  flutter_test:
-    sdk: flutter
   flutter_driver:
     sdk: flutter
+  flutter_test:
+    sdk: flutter
   integration_test:
     sdk: flutter
diff --git a/packages/video_player/video_player_web/lib/src/shims/dart_ui.dart b/packages/video_player/video_player_web/lib/src/shims/dart_ui.dart
index 5eacec5..bd28793 100644
--- a/packages/video_player/video_player_web/lib/src/shims/dart_ui.dart
+++ b/packages/video_player/video_player_web/lib/src/shims/dart_ui.dart
@@ -5,6 +5,6 @@
 /// This file shims dart:ui in web-only scenarios, getting rid of the need to
 /// suppress analyzer warnings.
 
-// TODO(flutter/flutter#55000) Remove this file once web-only dart:ui APIs
-// are exposed from a dedicated place.
+// TODO(ditman): Remove this file once web-only dart:ui APIs are exposed from
+// a dedicated place, https://github.com/flutter/flutter/issues/55000
 export 'dart_ui_fake.dart' if (dart.library.html) 'dart_ui_real.dart';
diff --git a/packages/video_player/video_player_web/lib/src/shims/dart_ui_fake.dart b/packages/video_player/video_player_web/lib/src/shims/dart_ui_fake.dart
index f2862af..8757ca2 100644
--- a/packages/video_player/video_player_web/lib/src/shims/dart_ui_fake.dart
+++ b/packages/video_player/video_player_web/lib/src/shims/dart_ui_fake.dart
@@ -7,13 +7,18 @@
 // Fake interface for the logic that this package needs from (web-only) dart:ui.
 // This is conditionally exported so the analyzer sees these methods as available.
 
+// ignore_for_file: avoid_classes_with_only_static_members
+// ignore_for_file: camel_case_types
+
 /// Shim for web_ui engine.PlatformViewRegistry
 /// https://github.com/flutter/engine/blob/master/lib/web_ui/lib/ui.dart#L62
 class platformViewRegistry {
   /// Shim for registerViewFactory
   /// https://github.com/flutter/engine/blob/master/lib/web_ui/lib/ui.dart#L72
-  static registerViewFactory(
-      String viewTypeId, html.Element Function(int viewId) viewFactory) {}
+  static bool registerViewFactory(
+      String viewTypeId, html.Element Function(int viewId) viewFactory) {
+    return false;
+  }
 }
 
 /// Shim for web_ui engine.AssetManager.
@@ -21,7 +26,7 @@
 class webOnlyAssetManager {
   /// Shim for getAssetUrl.
   /// https://github.com/flutter/engine/blob/master/lib/web_ui/lib/src/engine/assets.dart#L45
-  static getAssetUrl(String asset) {}
+  static String getAssetUrl(String asset) => '';
 }
 
 /// Signature of callbacks that have no arguments and return no data.
diff --git a/packages/video_player/video_player_web/lib/video_player_web.dart b/packages/video_player/video_player_web/lib/video_player_web.dart
index 612d22d..a676850 100644
--- a/packages/video_player/video_player_web/lib/video_player_web.dart
+++ b/packages/video_player/video_player_web/lib/video_player_web.dart
@@ -4,16 +4,17 @@
 
 import 'dart:async';
 import 'dart:html';
-import 'src/shims/dart_ui.dart' as ui;
 
 import 'package:flutter/material.dart';
 import 'package:flutter/services.dart';
 import 'package:flutter_web_plugins/flutter_web_plugins.dart';
 import 'package:video_player_platform_interface/video_player_platform_interface.dart';
 
+import 'src/shims/dart_ui.dart' as ui;
+
 // An error code value to error name Map.
 // See: https://developer.mozilla.org/en-US/docs/Web/API/MediaError/code
-const Map<int, String> _kErrorValueToErrorName = {
+const Map<int, String> _kErrorValueToErrorName = <int, String>{
   1: 'MEDIA_ERR_ABORTED',
   2: 'MEDIA_ERR_NETWORK',
   3: 'MEDIA_ERR_DECODE',
@@ -22,7 +23,7 @@
 
 // An error code value to description Map.
 // See: https://developer.mozilla.org/en-US/docs/Web/API/MediaError/code
-const Map<int, String> _kErrorValueToErrorDescription = {
+const Map<int, String> _kErrorValueToErrorDescription = <int, String>{
   1: 'The user canceled the fetching of the video.',
   2: 'A network error occurred while fetching the video, despite having previously been available.',
   3: 'An error occurred while trying to decode the video, despite having previously been determined to be usable.',
@@ -43,7 +44,7 @@
     VideoPlayerPlatform.instance = VideoPlayerPlugin();
   }
 
-  Map<int, _VideoPlayer> _videoPlayers = <int, _VideoPlayer>{};
+  final Map<int, _VideoPlayer> _videoPlayers = <int, _VideoPlayer>{};
 
   int _textureCounter = 1;
 
@@ -56,12 +57,13 @@
   Future<void> dispose(int textureId) async {
     _videoPlayers[textureId]!.dispose();
     _videoPlayers.remove(textureId);
-    return null;
+    return;
   }
 
   void _disposeAllPlayers() {
-    _videoPlayers.values
-        .forEach((_VideoPlayer videoPlayer) => videoPlayer.dispose());
+    for (final _VideoPlayer videoPlayer in _videoPlayers.values) {
+      videoPlayer.dispose();
+    }
     _videoPlayers.clear();
   }
 
@@ -86,10 +88,10 @@
         uri = assetUrl;
         break;
       case DataSourceType.file:
-        return Future.error(UnimplementedError(
+        return Future<int>.error(UnimplementedError(
             'web implementation of video_player cannot play local files'));
       case DataSourceType.contentUri:
-        return Future.error(UnimplementedError(
+        return Future<int>.error(UnimplementedError(
             'web implementation of video_player cannot play content uri'));
     }
 
@@ -225,7 +227,7 @@
       // The Event itself (_) doesn't contain info about the actual error.
       // We need to look at the HTMLMediaElement.error.
       // See: https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/error
-      MediaError error = videoElement.error!;
+      final MediaError error = videoElement.error!;
       eventController.addError(PlatformException(
         code: _kErrorValueToErrorName[error.code]!,
         message: error.message != '' ? error.message : _kDefaultErrorMessage,
@@ -247,18 +249,18 @@
   }
 
   Future<void> play() {
-    return videoElement.play().catchError((e) {
+    return videoElement.play().catchError((Object e) {
       // play() attempts to begin playback of the media. It returns
       // a Promise which can get rejected in case of failure to begin
       // playback for any reason, such as permission issues.
       // The rejection handler is called with a DomException.
       // See: https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/play
-      DomException exception = e;
+      final DomException exception = e as DomException;
       eventController.addError(PlatformException(
         code: exception.name,
         message: exception.message,
       ));
-    }, test: (e) => e is DomException);
+    }, test: (Object e) => e is DomException);
   }
 
   void pause() {
@@ -270,7 +272,7 @@
   }
 
   void setVolume(double value) {
-    // TODO: Do we need to expose a "muted" API? https://github.com/flutter/flutter/issues/60721
+    // TODO(ditman): Do we need to expose a "muted" API? https://github.com/flutter/flutter/issues/60721
     if (value > 0.0) {
       videoElement.muted = false;
     } else {
diff --git a/packages/video_player/video_player_web/pubspec.yaml b/packages/video_player/video_player_web/pubspec.yaml
index 353253b..69a2df4 100644
--- a/packages/video_player/video_player_web/pubspec.yaml
+++ b/packages/video_player/video_player_web/pubspec.yaml
@@ -2,7 +2,7 @@
 description: Web platform implementation of video_player.
 repository: https://github.com/flutter/plugins/tree/main/packages/video_player/video_player_web
 issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+video_player%22
-version: 2.0.6
+version: 2.0.7
 
 environment:
   sdk: ">=2.12.0 <3.0.0"
@@ -21,7 +21,6 @@
     sdk: flutter
   flutter_web_plugins:
     sdk: flutter
-  pedantic: ^1.10.0
   video_player_platform_interface: ">=4.2.0 <6.0.0"
 
 dev_dependencies:
diff --git a/script/configs/custom_analysis.yaml b/script/configs/custom_analysis.yaml
index 0dbeae4..493b6e6 100644
--- a/script/configs/custom_analysis.yaml
+++ b/script/configs/custom_analysis.yaml
@@ -26,4 +26,3 @@
 - in_app_purchase/in_app_purchase_android
 - in_app_purchase/in_app_purchase_storekit
 - video_player/video_player
-- video_player/video_player_web