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 createState() => _WebStreamPlayerState(); } class _WebStreamPlayerState extends State { 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); } }