diff --git a/lib/src/widgets/video_track_renderer.dart b/lib/src/widgets/video_track_renderer.dart index 06f8817bd..a437b80c7 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,20 @@ class _VideoTrackRendererState extends State { setState(() {}); }); _renderer?.onResize = () { + final videoValue = (_renderer as ValueNotifier?)?.value; + if (videoValue == null) { + return; + } + 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;