more reliable video playback

This commit is contained in:
Henry Hiles 2026-05-19 18:47:30 -04:00
commit 5c2f8fa014
Signed by: Henry-Hiles
SSH key fingerprint: SHA256:VKQUdS31Q90KvX7EkKMHMBpUspcmItAh86a+v7PGiIs

View file

@ -1,3 +1,5 @@
import "dart:async";
import "package:flutter/material.dart"; import "package:flutter/material.dart";
import "package:hooks_riverpod/hooks_riverpod.dart"; import "package:hooks_riverpod/hooks_riverpod.dart";
import "package:nexus/models/info/video.dart"; import "package:nexus/models/info/video.dart";
@ -13,15 +15,20 @@ class VideoPlayer extends HookConsumerWidget {
@override @override
Widget build(BuildContext context, WidgetRef ref) { Widget build(BuildContext context, WidgetRef ref) {
late final player = useMemoized( final player = useMemoized(
() => Player( () => Player(
configuration: PlayerConfiguration(bufferSize: 128 * 1024 * 1024), configuration: PlayerConfiguration(bufferSize: 128 * 1024 * 1024),
), ),
); );
late final controller = useMemoized(() => VideoController(player)); final controller = useMemoized(() => VideoController(player));
useEffect(() { useEffect(() {
player.open(Media(url.toString(), httpHeaders: ref.headers), play: false); scheduleMicrotask(
() => player.open(
Media(url.toString(), httpHeaders: ref.headers),
play: false,
),
);
return player.dispose; return player.dispose;
}, []); }, []);