diff --git a/packages/flutter_html_video/lib/flutter_html_video.dart b/packages/flutter_html_video/lib/flutter_html_video.dart
index b1ea0ca2de..65a018a6c8 100644
--- a/packages/flutter_html_video/lib/flutter_html_video.dart
+++ b/packages/flutter_html_video/lib/flutter_html_video.dart
@@ -2,9 +2,11 @@ library flutter_html_video;
import 'package:chewie/chewie.dart';
import 'package:flutter/material.dart';
+import 'package:flutter/services.dart';
import 'package:flutter_html/flutter_html.dart';
import 'package:video_player/video_player.dart';
import 'package:html/dom.dart' as dom;
+import 'dart:io';
typedef VideoControllerCallback = void Function(
dom.Element?, ChewieController, VideoPlayerController);
@@ -24,11 +26,15 @@ CustomRenderMatcher videoMatcher() => (context) {
class VideoWidget extends StatefulWidget {
final RenderContext context;
final VideoControllerCallback? callback;
+ final List? deviceOrientationsOnEnterFullScreen;
+ final List deviceOrientationsAfterFullScreen;
const VideoWidget({
Key? key,
required this.context,
this.callback,
+ this.deviceOrientationsOnEnterFullScreen,
+ this.deviceOrientationsAfterFullScreen = DeviceOrientation.values,
}) : super(key: key);
@override
@@ -54,7 +60,20 @@ class _VideoWidgetState extends State {
if (sources.isNotEmpty && sources.first != null) {
_width = givenWidth ?? (givenHeight ?? 150) * 2;
_height = givenHeight ?? (givenWidth ?? 300) / 2;
- _videoController = VideoPlayerController.network(sources.first!);
+ Uri sourceUri = Uri.parse(sources.first!);
+ switch (sourceUri.scheme) {
+ case 'asset':
+ _videoController = VideoPlayerController.asset(sourceUri.path);
+ break;
+ case 'file':
+ _videoController =
+ VideoPlayerController.file(File.fromUri(sourceUri));
+ break;
+ default:
+ _videoController =
+ VideoPlayerController.network(sourceUri.toString());
+ break;
+ }
_chewieController = ChewieController(
videoPlayerController: _videoController!,
placeholder:
@@ -67,6 +86,10 @@ class _VideoWidgetState extends State {
autoInitialize: true,
aspectRatio:
_width == null || _height == null ? null : _width! / _height!,
+ deviceOrientationsOnEnterFullScreen:
+ widget.deviceOrientationsOnEnterFullScreen,
+ deviceOrientationsAfterFullScreen:
+ widget.deviceOrientationsAfterFullScreen,
);
widget.callback?.call(
widget.context.tree.element, _chewieController!, _videoController!);