[video_player_web] Play videos from assets (#2384)
* [video_player_web] Add support for asset DataSources
* Roll pub version
* Remove deprecated author field
* Respond to review comments
* Add back author field
* Delete author field again
* Fix pubspecs
* Fix handling of packages
* add back author to platform interface
we will fix this when we update the pubspecs for this package
diff --git a/packages/video_player/video_player_web/CHANGELOG.md b/packages/video_player/video_player_web/CHANGELOG.md
index 425d052..914bcbc 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 24f8a91..070e81f 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 @@
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 01046ae..f5ee23e 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 @@
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 efe115d..ae35c30 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 @@
expect(VideoPlayerPlatform.instance.init(), completes);
});
- test('can create', () {
+ test('can create from network', () {
expect(
VideoPlayerPlatform.instance.create(
DataSource(
@@ -44,6 +44,29 @@
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);
});