Files
Hightube/frontend/lib/widgets/web_stream_player_web.dart
2026-04-01 11:30:52 +08:00

39 lines
1016 B
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;
const WebStreamPlayer({super.key, required this.streamUrl});
@override
State<WebStreamPlayer> createState() => _WebStreamPlayerState();
}
class _WebStreamPlayerState extends State<WebStreamPlayer> {
late final String _viewType;
@override
void initState() {
super.initState();
_viewType = 'flv-player-${DateTime.now().microsecondsSinceEpoch}';
ui_web.platformViewRegistry.registerViewFactory(_viewType, (int viewId) {
final iframe = html.IFrameElement()
..src = 'flv_player.html?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);
}
}