diff --git a/packages/video_player/video_player_avfoundation/CHANGELOG.md b/packages/video_player/video_player_avfoundation/CHANGELOG.md index a54aef5587..e8642b6e04 100644 --- a/packages/video_player/video_player_avfoundation/CHANGELOG.md +++ b/packages/video_player/video_player_avfoundation/CHANGELOG.md @@ -1,6 +1,7 @@ -## NEXT +## 2.4.7 * Updates minimum supported SDK version to Flutter 3.3/Dart 2.18. +* Adds iOS exception on incorrect asset path ## 2.4.6 diff --git a/packages/video_player/video_player_avfoundation/ios/Classes/FLTVideoPlayerPlugin.m b/packages/video_player/video_player_avfoundation/ios/Classes/FLTVideoPlayerPlugin.m index ccece11276..ba45d4d3ea 100644 --- a/packages/video_player/video_player_avfoundation/ios/Classes/FLTVideoPlayerPlugin.m +++ b/packages/video_player/video_player_avfoundation/ios/Classes/FLTVideoPlayerPlugin.m @@ -620,10 +620,15 @@ NS_INLINE UIViewController *rootViewController(void) { } else { assetPath = [_registrar lookupKeyForAsset:input.asset]; } - player = [[FLTVideoPlayer alloc] initWithAsset:assetPath - frameUpdater:frameUpdater - playerFactory:_playerFactory]; - return [self onPlayerSetup:player frameUpdater:frameUpdater]; + @try { + player = [[FLTVideoPlayer alloc] initWithAsset:assetPath + frameUpdater:frameUpdater + playerFactory:_playerFactory]; + return [self onPlayerSetup:player frameUpdater:frameUpdater]; + } @catch (NSException *exception) { + *error = [FlutterError errorWithCode:@"video_player" message:exception.reason details:nil]; + return nil; + } } else if (input.uri) { player = [[FLTVideoPlayer alloc] initWithURL:[NSURL URLWithString:input.uri] frameUpdater:frameUpdater diff --git a/packages/video_player/video_player_avfoundation/pubspec.yaml b/packages/video_player/video_player_avfoundation/pubspec.yaml index 093f5ebbb5..a0c2f4ebae 100644 --- a/packages/video_player/video_player_avfoundation/pubspec.yaml +++ b/packages/video_player/video_player_avfoundation/pubspec.yaml @@ -2,7 +2,7 @@ name: video_player_avfoundation description: iOS implementation of the video_player plugin. repository: https://github.com/flutter/packages/tree/main/packages/video_player/video_player_avfoundation 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.18.0 <4.0.0" diff --git a/packages/video_player/video_player_avfoundation/test/avfoundation_video_player_test.dart b/packages/video_player/video_player_avfoundation/test/avfoundation_video_player_test.dart index 1b25da8bba..671256ae07 100644 --- a/packages/video_player/video_player_avfoundation/test/avfoundation_video_player_test.dart +++ b/packages/video_player/video_player_avfoundation/test/avfoundation_video_player_test.dart @@ -135,6 +135,18 @@ void main() { expect(textureId, 3); }); + test('create with incorrect asset throws exception', () async { + try { + await player.create(DataSource( + sourceType: DataSourceType.asset, + asset: '/path/to/incorrect_asset', + )); + fail('should throw PlatformException'); + } catch (e) { + expect(e, isException); + } + }); + test('create with network', () async { final int? textureId = await player.create(DataSource( sourceType: DataSourceType.network,