Skip to content

Commit eaad032

Browse files
authored
VideoRenderer support cache renderer. (#723)
1 parent 6365ec6 commit eaad032

File tree

1 file changed

+10
-1
lines changed

1 file changed

+10
-1
lines changed

lib/src/widgets/video_track_renderer.dart

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,12 +48,16 @@ class VideoTrackRenderer extends StatefulWidget {
4848
final rtc.RTCVideoViewObjectFit fit;
4949
final VideoViewMirrorMode mirrorMode;
5050
final VideoRenderMode renderMode;
51+
final rtc.RTCVideoRenderer? cachedRenderer;
52+
final bool autoDisposeRenderer;
5153

5254
const VideoTrackRenderer(
5355
this.track, {
5456
this.fit = rtc.RTCVideoViewObjectFit.RTCVideoViewObjectFitContain,
5557
this.mirrorMode = VideoViewMirrorMode.auto,
5658
this.renderMode = VideoRenderMode.texture,
59+
this.autoDisposeRenderer = true,
60+
this.cachedRenderer,
5761
Key? key,
5862
}) : super(key: key);
5963

@@ -114,6 +118,9 @@ class _VideoTrackRendererState extends State<VideoTrackRenderer> {
114118
@override
115119
void initState() {
116120
super.initState();
121+
if (widget.cachedRenderer != null) {
122+
_renderer = widget.cachedRenderer;
123+
}
117124
_internalKey = widget.track.addViewKey();
118125
if (kIsWeb) {
119126
() async {
@@ -127,7 +134,9 @@ class _VideoTrackRendererState extends State<VideoTrackRenderer> {
127134
void dispose() {
128135
widget.track.removeViewKey(_internalKey);
129136
_listener?.dispose();
130-
disposeRenderer();
137+
if (widget.autoDisposeRenderer) {
138+
disposeRenderer();
139+
}
131140
super.dispose();
132141
}
133142

0 commit comments

Comments
 (0)