Files
Hightube/frontend/lib/widgets/web_stream_player_web.dart

46 lines
1.1 KiB
Dart

import 'dart:html' as html;
import 'dart:ui_web' as ui_web;
import 'package:flutter/material.dart';
class WebStreamPlayer extends StatefulWidget {
final String streamUrl;
final int? refreshToken;
const WebStreamPlayer({
super.key,
required this.streamUrl,
this.refreshToken,
});
@override
State<WebStreamPlayer> createState() => _WebStreamPlayerState();
}
class _WebStreamPlayerState extends State<WebStreamPlayer> {
late final String _viewType;
@override
void initState() {
super.initState();
final cacheBuster = DateTime.now().microsecondsSinceEpoch;
_viewType = 'flv-player-$cacheBuster';
ui_web.platformViewRegistry.registerViewFactory(_viewType, (int viewId) {
final iframe = html.IFrameElement()
..src =
'flv_player.html?v=$cacheBuster&src=${Uri.encodeComponent(widget.streamUrl)}'
..style.border = '0'
..style.width = '100%'
..style.height = '100%'
..allow = 'autoplay; fullscreen';
return iframe;
});
}
@override
Widget build(BuildContext context) {
return HtmlElementView(viewType: _viewType);
}
}