diff --git a/packages/video_player/video_player_web/CHANGELOG.md b/packages/video_player/video_player_web/CHANGELOG.md index 425d0522d723..914bcbc4347c 100644 --- a/packages/video_player/video_player_web/CHANGELOG.md +++ b/packages/video_player/video_player_web/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.1.1 + +* Support videos from assets. + ## 0.1.0+1 * Remove the deprecated `author:` field from pubspec.yaml 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 24f8a91047c2..070e81f3b9e7 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 @@ -42,8 +42,28 @@ class VideoPlayerPlugin extends VideoPlayerPlatform { final int textureId = _textureCounter; _textureCounter++; + Uri uri; + switch (dataSource.sourceType) { + case DataSourceType.network: + uri = Uri.parse(dataSource.uri); + break; + case DataSourceType.asset: + String assetUrl = dataSource.asset; + if (dataSource.package != null && dataSource.package.isNotEmpty) { + assetUrl = 'packages/${dataSource.package}/$assetUrl'; + } + // 'webOnlyAssetManager' is only in the web version of dart:ui + // ignore: undefined_prefixed_name + assetUrl = ui.webOnlyAssetManager.getAssetUrl(assetUrl); + uri = Uri.parse(assetUrl); + break; + case DataSourceType.file: + return Future.error(UnimplementedError( + 'web implementation of video_player cannot play local files')); + } + final _VideoPlayer player = _VideoPlayer( - uri: Uri.parse(dataSource.uri), + uri: uri, textureId: textureId, ); diff --git a/packages/video_player/video_player_web/pubspec.yaml b/packages/video_player/video_player_web/pubspec.yaml index 01046ae45e78..f5ee23e3bd38 100644 --- a/packages/video_player/video_player_web/pubspec.yaml +++ b/packages/video_player/video_player_web/pubspec.yaml @@ -1,7 +1,7 @@ name: video_player_web description: Web platform implementation of video_player homepage: https://github.com/flutter/plugins/tree/master/packages/video_player/video_player_web -version: 0.1.0+1 +version: 0.1.1 flutter: plugin: @@ -26,4 +26,4 @@ dev_dependencies: environment: sdk: ">=2.0.0-dev.28.0 <3.0.0" - flutter: ">=1.10.0 <2.0.0" + flutter: ">=1.12.8 <2.0.0" diff --git a/packages/video_player/video_player_web/test/video_player_web_test.dart b/packages/video_player/video_player_web/test/video_player_web_test.dart index efe115d02e5f..ae35c30cb760 100644 --- a/packages/video_player/video_player_web/test/video_player_web_test.dart +++ b/packages/video_player/video_player_web/test/video_player_web_test.dart @@ -33,7 +33,7 @@ void main() { expect(VideoPlayerPlatform.instance.init(), completes); }); - test('can create', () { + test('can create from network', () { expect( VideoPlayerPlatform.instance.create( DataSource( @@ -44,6 +44,29 @@ void main() { completion(isNonZero)); }); + test('can create from asset', () { + expect( + VideoPlayerPlatform.instance.create( + DataSource( + sourceType: DataSourceType.asset, + asset: 'videos/bee.mp4', + package: 'bee_vids', + ), + ), + completion(isNonZero)); + }); + + test('cannot create from file', () { + expect( + VideoPlayerPlatform.instance.create( + DataSource( + sourceType: DataSourceType.file, + uri: '/videos/bee.mp4', + ), + ), + throwsUnimplementedError); + }); + test('can dispose', () { expect(VideoPlayerPlatform.instance.dispose(textureId), completes); });