我在这里详细介绍了使用 Afterglow 视频播放器的解决方案。
您可以将其替换为您选择的任何 HTML/JS 视频播放器,方法相同。
基本上,您需要更改index.html模板文件并使用dart:html或Universal_html包与 DOM 交互以播放您想要的视频文件。
- index.html 看起来像:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Web Video Player</title>
<script src="https://cdn.jsdelivr.net/npm/afterglowplayer@1.x"></script></head>
<body>
<script src="main.dart.js" type="application/javascript"></script>
<a id="triggerVideoPlayer" class="afterglow" href="#videoPlayer"></a>
<video id="videoPlayer" width="960" height="540" data-skin="dark">
</video>
</body>
</html>
- 你需要一个playVideo方法,如下所示:
import 'package:flutter/foundation.dart';
import 'package:universal_html/html.dart' as html;
void playVideo(String atUrl) {
if(kIsWeb) {
final v = html.window.document.getElementById('videoPlayer');
if(v != null) {
v.setInnerHtml(
'<source type="video/mp4" src="$atUrl">',
validator: html.NodeValidatorBuilder()
..allowElement('source', attributes: ['src', 'type']));
final a = html.window.document.getElementById( 'triggerVideoPlayer' );
if(a != null) {
a.dispatchEvent(html.MouseEvent('click'));
}
}
} else {
// we're not on the web platform
// and should use the video_player package
}
}
- 你会像这样播放视频:
playVideo('http://distribution.bbb3d.renderfarming.net/video/mp4/bbb_sunflower_1080p_30fps_normal.mp4');
在 2019 年 12 月 10 日之前,这种方法是在 Flutter Web 应用中播放视频的唯一方法之一。在Flutter Interact 2019上,Web 支持几个包,包括video_player_web包。上面提供的选项仍然有效,并且可以在您的用例中为您提供更好的服务。