8000 Enhance RTC video view with placeholder builder property (#1206) · withub-com/flutter-webrtc@83f670c · GitHub
[go: up one dir, main page]

Skip to content

Commit 83f670c

Browse files
Enhance RTC video view with placeholder builder property (flutter-webrtc#1206)
* Enhance RTC video view with placeholder builder property * Assemble render video flag conditions of video renderer in one method
1 parent d637c12 commit 83f670c

File tree

3 files changed

+10
-7
lines changed

3 files changed

+10
-7
lines changed

lib/src/native/rtc_video_renderer_impl.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ class RTCVideoRenderer extends ValueNotifier<RTCVideoValue>
119119
}
120120

121121
@override
122-
bool get renderVideo => srcObject != null;
122+
bool get renderVideo => _textureId != null && _srcObject != null;
123123

124124
@override
125125
bool get muted => _srcObject?.getAudioTracks()[0].muted ?? true;

lib/src/native/rtc_video_view_impl.dart

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,23 +13,25 @@ class RTCVideoView extends StatelessWidget {
1313
this.objectFit = RTCVideoViewObjectFit.RTCVideoViewObjectFitContain,
1414
this.mirror = false,
1515
this.filterQuality = FilterQuality.low,
16+
this.placeholderBuilder,
1617
}) : super(key: key);
1718

1819
final RTCVideoRenderer _renderer;
1920
final RTCVideoViewObjectFit objectFit;
2021
final bool mirror;
2122
final FilterQuality filterQuality;
23+
final WidgetBuilder? placeholderBuilder;
2224

2325
RTCVideoRenderer get videoRenderer => _renderer;
2426

2527
@override
2628
Widget build(BuildContext context) {
2729
return LayoutBuilder(
2830
builder: (BuildContext context, BoxConstraints constraints) =>
29-
_buildVideoView(constraints));
31+
_buildVideoView(context, constraints));
3032
}
3133

32-
Widget _buildVideoView(BoxConstraints constraints) {
34+
Widget _buildVideoView(BuildContext context, BoxConstraints constraints) {
3335
return Center(
3436
child: Container(
3537
width: constraints.maxWidth,
@@ -53,13 +55,12 @@ class RTCVideoView extends StatelessWidget {
5355
child: Transform(
5456
transform: Matrix4.identity()..rotateY(mirror ? -pi : 0.0),
5557
alignment: FractionalOffset.center,
56-
child: videoRenderer.textureId != null &&
57-
videoRenderer.srcObject != null
58+
child: videoRenderer.renderVideo
5859
? Texture(
5960
textureId: videoRenderer.textureId!,
6061
filterQuality: filterQuality,
6162
)
62-
: Container(),
63+
: placeholderBuilder?.call(context) ?? Container(),
6364
),
6465
),
6566
),

lib/src/web/rtc_video_view_impl.dart

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,14 @@ class RTCVideoView extends StatefulWidget {
1515
this.objectFit = RTCVideoViewObjectFit.RTCVideoViewObjectFitContain,
1616
this.mirror = false,
1717
this.filterQuality = FilterQuality.low,
18+
this.placeholderBuilder,
1819
}) : super(key: key);
1920

2021
final RTCVideoRenderer _renderer;
2122
final RTCVideoViewObjectFit objectFit;
2223
final bool mirror;
2324
final FilterQuality filterQuality;
25+
final WidgetBuilder? placeholderBuilder;
2426

< 77AD /code>
2527
@override
2628
RTCVideoViewState createState() => RTCVideoViewState();
@@ -83,7 +85,7 @@ class RTCVideoViewState extends State<RTCVideoView> {
8385
height: constraints.maxHeight,
8486
child: widget._renderer.renderVideo
8587
? buildVideoElementView()
86-
: Container(),
88+
: widget.placeholderBuilder?.call(context) ?? Container(),
8789
),
8890
);
8991
},

0 commit comments

Comments
 (0)
0