Fix used before init in video viewer

This commit is contained in:
Ming Ming 2024-05-11 21:26:04 +08:00
parent bc3c480223
commit 6a29f8966c

View file

@ -59,12 +59,14 @@ class VideoViewer extends StatefulWidget {
class _VideoViewerState extends State<VideoViewer>
with DisposableManagerMixin<VideoViewer> {
@override
initState() {
void initState() {
super.initState();
_getVideoUrl().then((url) {
if (mounted) {
setState(() {
_initController(url);
});
}
}).onError((e, stacktrace) {
_log.shout("[initState] Failed while _getVideoUrl", e, stacktrace);
SnackBarManager().showSnackBar(SnackBar(
@ -75,6 +77,12 @@ class _VideoViewerState extends State<VideoViewer>
});
}
@override
void dispose() {
_controllerValue?.dispose();
super.dispose();
}
@override
initDisposables() {
return [
@ -100,15 +108,9 @@ class _VideoViewerState extends State<VideoViewer>
);
}
@override
dispose() {
super.dispose();
_controller.dispose();
}
Future<void> _initController(String url) async {
try {
_controller = VideoPlayerController.network(
_controllerValue = VideoPlayerController.network(
url,
httpHeaders: {
"Authorization": AuthUtil.fromAccount(widget.account).toHeaderValue(),
@ -293,9 +295,11 @@ class _VideoViewerState extends State<VideoViewer>
}
}
VideoPlayerController get _controller => _controllerValue!;
final _key = GlobalKey();
bool _isControllerInitialized = false;
late VideoPlayerController _controller;
VideoPlayerController? _controllerValue;
var _isFinished = false;
}