diff --git a/packages/video_player/video_player_platform_interface/CHANGELOG.md b/packages/video_player/video_player_platform_interface/CHANGELOG.md
index 8d295aa..353f273 100644
--- a/packages/video_player/video_player_platform_interface/CHANGELOG.md
+++ b/packages/video_player/video_player_platform_interface/CHANGELOG.md
@@ -1,6 +1,7 @@
-## NEXT
+## 5.0.2
 
 * Adds the Pigeon definitions used to create the method channel implementation.
+* Internal code cleanup for stricter analysis options.
 
 ## 5.0.1
 
diff --git a/packages/video_player/video_player_platform_interface/analysis_options.yaml b/packages/video_player/video_player_platform_interface/analysis_options.yaml
deleted file mode 100644
index 5aeb4e7..0000000
--- a/packages/video_player/video_player_platform_interface/analysis_options.yaml
+++ /dev/null
@@ -1 +0,0 @@
-include: ../../../analysis_options_legacy.yaml
diff --git a/packages/video_player/video_player_platform_interface/lib/messages.dart b/packages/video_player/video_player_platform_interface/lib/messages.dart
index 0ddbfae..831f4e3 100644
--- a/packages/video_player/video_player_platform_interface/lib/messages.dart
+++ b/packages/video_player/video_player_platform_interface/lib/messages.dart
@@ -4,7 +4,7 @@
 
 // Autogenerated from Pigeon (v0.1.21), do not edit directly.
 // See also: https://pub.dev/packages/pigeon
-// ignore_for_file: public_member_api_docs, non_constant_identifier_names, avoid_as, unused_import
+// ignore_for_file: public_member_api_docs, non_constant_identifier_names, avoid_as, unused_import, cast_nullable_to_non_nullable
 // @dart = 2.12
 import 'dart:async';
 import 'dart:typed_data' show Uint8List, Int32List, Int64List, Float64List;
diff --git a/packages/video_player/video_player_platform_interface/lib/method_channel_video_player.dart b/packages/video_player/video_player_platform_interface/lib/method_channel_video_player.dart
index 31d1839..2aa7fb3 100644
--- a/packages/video_player/video_player_platform_interface/lib/method_channel_video_player.dart
+++ b/packages/video_player/video_player_platform_interface/lib/method_channel_video_player.dart
@@ -17,7 +17,7 @@
 /// third-party implementations. It is not used by other implementations in
 /// this repository.
 class MethodChannelVideoPlayer extends VideoPlayerPlatform {
-  VideoPlayerApi _api = VideoPlayerApi();
+  final VideoPlayerApi _api = VideoPlayerApi();
 
   @override
   Future<void> init() {
@@ -31,7 +31,7 @@
 
   @override
   Future<int?> create(DataSource dataSource) async {
-    CreateMessage message = CreateMessage();
+    final CreateMessage message = CreateMessage();
 
     switch (dataSource.sourceType) {
       case DataSourceType.asset:
@@ -51,7 +51,7 @@
         break;
     }
 
-    TextureMessage response = await _api.create(message);
+    final TextureMessage response = await _api.create(message);
     return response.textureId;
   }
 
@@ -97,7 +97,7 @@
 
   @override
   Future<Duration> getPosition(int textureId) async {
-    PositionMessage response =
+    final PositionMessage response =
         await _api.position(TextureMessage()..textureId = textureId);
     return Duration(milliseconds: response.position!);
   }
@@ -107,21 +107,21 @@
     return _eventChannelFor(textureId)
         .receiveBroadcastStream()
         .map((dynamic event) {
-      final Map<dynamic, dynamic> map = event;
+      final Map<dynamic, dynamic> map = event as Map<dynamic, dynamic>;
       switch (map['event']) {
         case 'initialized':
           return VideoEvent(
             eventType: VideoEventType.initialized,
-            duration: Duration(milliseconds: map['duration']),
-            size: Size(map['width']?.toDouble() ?? 0.0,
-                map['height']?.toDouble() ?? 0.0),
+            duration: Duration(milliseconds: map['duration']! as int),
+            size: Size((map['width'] as num?)?.toDouble() ?? 0.0,
+                (map['height'] as num?)?.toDouble() ?? 0.0),
           );
         case 'completed':
           return VideoEvent(
             eventType: VideoEventType.completed,
           );
         case 'bufferingUpdate':
-          final List<dynamic> values = map['values'];
+          final List<dynamic> values = map['values']! as List<dynamic>;
 
           return VideoEvent(
             buffered: values.map<DurationRange>(_toDurationRange).toList(),
@@ -162,10 +162,10 @@
   };
 
   DurationRange _toDurationRange(dynamic value) {
-    final List<dynamic> pair = value;
+    final List<dynamic> pair = value as List<dynamic>;
     return DurationRange(
-      Duration(milliseconds: pair[0]),
-      Duration(milliseconds: pair[1]),
+      Duration(milliseconds: pair[0]! as int),
+      Duration(milliseconds: pair[1]! as int),
     );
   }
 }
diff --git a/packages/video_player/video_player_platform_interface/lib/video_player_platform_interface.dart b/packages/video_player/video_player_platform_interface/lib/video_player_platform_interface.dart
index 451537a..f10fe66 100644
--- a/packages/video_player/video_player_platform_interface/lib/video_player_platform_interface.dart
+++ b/packages/video_player/video_player_platform_interface/lib/video_player_platform_interface.dart
@@ -127,7 +127,7 @@
     this.formatHint,
     this.asset,
     this.package,
-    this.httpHeaders = const {},
+    this.httpHeaders = const <String, String>{},
   });
 
   /// The way in which the video was originally loaded.
@@ -193,6 +193,7 @@
 }
 
 /// Event emitted from the platform implementation.
+@immutable
 class VideoEvent {
   /// Creates an instance of [VideoEvent].
   ///
@@ -200,6 +201,10 @@
   ///
   /// Depending on the [eventType], the [duration], [size] and [buffered]
   /// arguments can be null.
+  // TODO(stuartmorgan): Temporarily suppress warnings about not using const
+  // in all of the other video player packages, fix this, and then update
+  // the other packages to use const.
+  // ignore: prefer_const_constructors_in_immutables
   VideoEvent({
     required this.eventType,
     this.duration,
@@ -270,9 +275,14 @@
 
 /// Describes a discrete segment of time within a video using a [start] and
 /// [end] [Duration].
+@immutable
 class DurationRange {
   /// Trusts that the given [start] and [end] are actually in order. They should
   /// both be non-null.
+  // TODO(stuartmorgan): Temporarily suppress warnings about not using const
+  // in all of the other video player packages, fix this, and then update
+  // the other packages to use const.
+  // ignore: prefer_const_constructors_in_immutables
   DurationRange(this.start, this.end);
 
   /// The beginning of the segment described relative to the beginning of the
@@ -313,7 +323,8 @@
   }
 
   @override
-  String toString() => '$runtimeType(start: $start, end: $end)';
+  String toString() =>
+      '${objectRuntimeType(this, 'DurationRange')}(start: $start, end: $end)';
 
   @override
   bool operator ==(Object other) =>
@@ -328,14 +339,19 @@
 }
 
 /// [VideoPlayerOptions] can be optionally used to set additional player settings
+@immutable
 class VideoPlayerOptions {
+  /// set additional optional player settings
+  // TODO(stuartmorgan): Temporarily suppress warnings about not using const
+  // in all of the other video player packages, fix this, and then update
+  // the other packages to use const.
+  // ignore: prefer_const_constructors_in_immutables
+  VideoPlayerOptions({this.mixWithOthers = false});
+
   /// Set this to true to mix the video players audio with other audio sources.
   /// The default value is false
   ///
   /// Note: This option will be silently ignored in the web platform (there is
   /// currently no way to implement this feature in this platform).
   final bool mixWithOthers;
-
-  /// set additional optional player settings
-  VideoPlayerOptions({this.mixWithOthers = false});
 }
diff --git a/packages/video_player/video_player_platform_interface/pubspec.yaml b/packages/video_player/video_player_platform_interface/pubspec.yaml
index b7d5745..7d5bd83 100644
--- a/packages/video_player/video_player_platform_interface/pubspec.yaml
+++ b/packages/video_player/video_player_platform_interface/pubspec.yaml
@@ -4,7 +4,7 @@
 issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+video_player%22
 # NOTE: We strongly prefer non-breaking changes, even at the expense of a
 # less-clean API. See https://flutter.dev/go/platform-interface-breaking-changes
-version: 5.0.1
+version: 5.0.2
 
 environment:
   sdk: ">=2.12.0 <3.0.0"
diff --git a/packages/video_player/video_player_platform_interface/test/method_channel_video_player_test.dart b/packages/video_player/video_player_platform_interface/test/method_channel_video_player_test.dart
index 4d1c9b7..75baba4 100644
--- a/packages/video_player/video_player_platform_interface/test/method_channel_video_player_test.dart
+++ b/packages/video_player/video_player_platform_interface/test/method_channel_video_player_test.dart
@@ -13,7 +13,7 @@
 import 'test.dart';
 
 class _ApiLogger implements TestHostVideoPlayerApi {
-  final List<String> log = [];
+  final List<String> log = <String>[];
   TextureMessage? textureMessage;
   CreateMessage? createMessage;
   PositionMessage? positionMessage;
@@ -148,7 +148,7 @@
       expect(log.createMessage?.uri, 'someUri');
       expect(log.createMessage?.packageName, null);
       expect(log.createMessage?.formatHint, 'dash');
-      expect(log.createMessage?.httpHeaders, {});
+      expect(log.createMessage?.httpHeaders, <Object?, Object?>{});
       expect(textureId, 3);
     });
 
@@ -156,14 +156,15 @@
       final int? textureId = await player.create(DataSource(
         sourceType: DataSourceType.network,
         uri: 'someUri',
-        httpHeaders: {'Authorization': 'Bearer token'},
+        httpHeaders: <String, String>{'Authorization': 'Bearer token'},
       ));
       expect(log.log.last, 'create');
       expect(log.createMessage?.asset, null);
       expect(log.createMessage?.uri, 'someUri');
       expect(log.createMessage?.packageName, null);
       expect(log.createMessage?.formatHint, null);
-      expect(log.createMessage?.httpHeaders, {'Authorization': 'Bearer token'});
+      expect(log.createMessage?.httpHeaders,
+          <String, String>{'Authorization': 'Bearer token'});
       expect(textureId, 3);
     });
 
@@ -238,7 +239,7 @@
       _ambiguate(ServicesBinding.instance)
           ?.defaultBinaryMessenger
           .setMockMessageHandler(
-        "flutter.io/videoPlayer/videoEvents123",
+        'flutter.io/videoPlayer/videoEvents123',
         (ByteData? message) async {
           final MethodCall methodCall =
               const StandardMethodCodec().decodeMethodCall(message);
@@ -246,7 +247,7 @@
             await _ambiguate(ServicesBinding.instance)
                 ?.defaultBinaryMessenger
                 .handlePlatformMessage(
-                    "flutter.io/videoPlayer/videoEvents123",
+                    'flutter.io/videoPlayer/videoEvents123',
                     const StandardMethodCodec()
                         .encodeSuccessEnvelope(<String, dynamic>{
                       'event': 'initialized',
@@ -259,7 +260,7 @@
             await _ambiguate(ServicesBinding.instance)
                 ?.defaultBinaryMessenger
                 .handlePlatformMessage(
-                    "flutter.io/videoPlayer/videoEvents123",
+                    'flutter.io/videoPlayer/videoEvents123',
                     const StandardMethodCodec()
                         .encodeSuccessEnvelope(<String, dynamic>{
                       'event': 'completed',
@@ -269,7 +270,7 @@
             await _ambiguate(ServicesBinding.instance)
                 ?.defaultBinaryMessenger
                 .handlePlatformMessage(
-                    "flutter.io/videoPlayer/videoEvents123",
+                    'flutter.io/videoPlayer/videoEvents123',
                     const StandardMethodCodec()
                         .encodeSuccessEnvelope(<String, dynamic>{
                       'event': 'bufferingUpdate',
@@ -283,7 +284,7 @@
             await _ambiguate(ServicesBinding.instance)
                 ?.defaultBinaryMessenger
                 .handlePlatformMessage(
-                    "flutter.io/videoPlayer/videoEvents123",
+                    'flutter.io/videoPlayer/videoEvents123',
                     const StandardMethodCodec()
                         .encodeSuccessEnvelope(<String, dynamic>{
                       'event': 'bufferingStart',
@@ -293,7 +294,7 @@
             await _ambiguate(ServicesBinding.instance)
                 ?.defaultBinaryMessenger
                 .handlePlatformMessage(
-                    "flutter.io/videoPlayer/videoEvents123",
+                    'flutter.io/videoPlayer/videoEvents123',
                     const StandardMethodCodec()
                         .encodeSuccessEnvelope(<String, dynamic>{
                       'event': 'bufferingEnd',
diff --git a/script/configs/custom_analysis.yaml b/script/configs/custom_analysis.yaml
index 7ef7969..0dbeae4 100644
--- a/script/configs/custom_analysis.yaml
+++ b/script/configs/custom_analysis.yaml
@@ -26,5 +26,4 @@
 - in_app_purchase/in_app_purchase_android
 - in_app_purchase/in_app_purchase_storekit
 - video_player/video_player
-- video_player/video_player_platform_interface
 - video_player/video_player_web
