From a18559403b59545b87da589cd45f52a7cd1bb8ac Mon Sep 17 00:00:00 2001 From: Tobias Ollmann Date: Tue, 18 Nov 2025 11:23:14 +0100 Subject: [PATCH 1/2] feat: add onResize to VideoTrackRenderer --- lib/src/widgets/video_track_renderer.dart | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/lib/src/widgets/video_track_renderer.dart b/lib/src/widgets/video_track_renderer.dart index 06f8817bd..e01a17b4c 100644 --- a/lib/src/widgets/video_track_renderer.dart +++ b/lib/src/widgets/video_track_renderer.dart @@ -69,6 +69,8 @@ class VideoTrackRenderer extends StatefulWidget { /// wrap the video view in a Center widget (if [fit] is [VideoViewFit.contain]) final bool autoCenter; + final void Function(Size)? onResize; + const VideoTrackRenderer( this.track, { this.fit = VideoViewFit.contain, @@ -77,6 +79,7 @@ class VideoTrackRenderer extends StatefulWidget { this.autoDisposeRenderer = true, this.cachedRenderer, this.autoCenter = true, + this.onResize, Key? key, }) : super(key: key); @@ -176,6 +179,17 @@ class _VideoTrackRendererState extends State { setState(() {}); }); _renderer?.onResize = () { + final videoValue = (_renderer as ValueNotifier).value; + final double width; + final double height; + if (videoValue.rotation % 180 == 0) { + width = videoValue.width; + height = videoValue.height; + } else { + width = videoValue.height; + height = videoValue.width; + } + widget.onResize?.call(Size(width, height)); if (mounted) { setState(() { _aspectRatio = (_renderer as rtc.RTCVideoRenderer?)?.videoValue.aspectRatio; From afd64e252f6cecdb294c003d8d76b0aeb049029f Mon Sep 17 00:00:00 2001 From: Tobias Ollmann Date: Thu, 22 Jan 2026 16:45:21 +0100 Subject: [PATCH 2/2] fix: handle _renderer being null --- lib/src/widgets/video_track_renderer.dart | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/src/widgets/video_track_renderer.dart b/lib/src/widgets/video_track_renderer.dart index e01a17b4c..a437b80c7 100644 --- a/lib/src/widgets/video_track_renderer.dart +++ b/lib/src/widgets/video_track_renderer.dart @@ -179,7 +179,10 @@ class _VideoTrackRendererState extends State { setState(() {}); }); _renderer?.onResize = () { - final videoValue = (_renderer as ValueNotifier).value; + final videoValue = (_renderer as ValueNotifier?)?.value; + if (videoValue == null) { + return; + } final double width; final double height; if (videoValue.rotation % 180 == 0) {