8000 Update. · Tutileni/flutter-webrtc@dc6909f · GitHub
[go: up one dir, main page]

Skip to content

Commit dc6909f

Browse files
committed
Update.
1 parent 5084cc1 commit dc6909f

File tree

3 files changed

+46
-31
lines changed

3 files changed

+46
-31
lines changed

example/lib/src/get_display_media_sample.dart

Lines changed: 28 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,19 @@
1-
import 'package:flutter/material.dart';
2-
import 'package:flutter_webrtc/webrtc.dart';
31
import 'dart:core';
42
import 'dart:async';
3+
import 'dart:io';
4+
import 'package:flutter/material.dart';
5+
import 'package:flutter_webrtc/webrtc.dart';
6+
7+
58
/*
69
* getDisplayMedia sample
710
*/
811
class GetDisplayMediaSample extends StatefulWidget {
912
static String tag = 'get_display_media_sample';
1013

1114
@override
12-
_GetDisplayMediaSampleState createState() => new _GetDisplayMediaSampleState();
15+
_GetDisplayMediaSampleState createState() =>
16+
new _GetDisplayMediaSampleState();
1317
}
1418

1519
class _GetDisplayMediaSampleState extends State<GetDisplayMediaSample> {
@@ -54,8 +58,10 @@ class _GetDisplayMediaSampleState extends State<GetDisplayMediaSample> {
5458

5559
try {
5660
var stream = await navigator.getDisplayMedia(mediaConstraints);
57-
_localStream = stream;
58-
_localRenderer.srcObject = _localStream;
61+
setState(() {
62+
_localStream = stream;
63+
_localRenderer.srcObject = _localStream;
64+
});
5965
} catch (e) {
6066
print(e.toString());
6167
}
@@ -72,6 +78,7 @@ class _GetDisplayMediaSampleState extends State<GetDisplayMediaSample> {
7278
try {
7379
await _localStream.dispose();
7480
_localRenderer.srcObject = null;
81+
_localStream = null;
7582
} catch (e) {
7683
print(e.toString());
7784
}
@@ -90,19 +97,22 @@ class _GetDisplayMediaSampleState extends State<GetDisplayMediaSample> {
9097
body: new OrientationBuilder(
9198
builder: (context, orientation) {
9299
return new Center(
93-
child: new Stack(
94-
children: <Widget>[
95-
new Center(
96-
child:new Text('counter: ' + _counter.toString()),
97-
),
98-
new Container(
99-
margin: new EdgeInsets.fromLTRB(0.0, 0.0, 0.0, 0.0),
100-
width: MediaQuery.of(context).size.width,
101-
height: MediaQuery.of(context).size.height,
102-
child: RTCVideoView(_localRenderer),
103-
decoration: new BoxDecoration(color: Colors.black54),
104-
)
105-
]),
100+
child: new Stack(children: <Widget>[
101+
new Center(
102+
child: new Text('counter: ' + _counter.toString()),
103+
),
104+
new Container(
105+
margin: new EdgeInsets.fromLTRB(0.0, 0.0, 0.0, 0.0),
106+
width: MediaQuery.of(context).size.width,
107+
height: MediaQuery.of(context).size.height,
108+
child: Platform.isIOS
109+
? (_localStream == null
110+
? Container()
111+
: RTCPlatformVideoView(_localStream))
112+
: RTCVideoView(_localRenderer),
113+
decoration: new BoxDecoration(color: Colors.black54),
114+
)
115+
]),
106116
);
107117
},
108118
),

example/lib/src/get_user_media_sample.dart

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import 'dart:io';
2+
import 'dart:core';
23

34
import 'package:flutter/material.dart';
45
import 'package:flutter_webrtc/webrtc.dart';
5-
import 'dart:core';
66
import 'package:path_provider/path_provider.dart';
77

88
/*
@@ -81,6 +81,7 @@ class _GetUserMediaSampleState extends State<GetUserMediaSample> {
8181
}
8282
setState(() {
8383
_inCalling = false;
84+
_localStream = null;
8485
});
8586
}
8687

ios/Classes/FlutterRTCVideoView.m

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -18,23 +18,27 @@ - (UIView *)view {
1818
}
1919

2020
- (void)videoView:(id <RTCVideoRenderer>)videoView didChangeVideoSize:(CGSize)size {
21-
self.size = size;
22-
[self.videoView setSize:size];
23-
// self.videoView.frame = CGRectMake(0, 0, size.width, size.height);
24-
NSDictionary *event = @{
25-
@"width": @(size.width),
26-
@"height": @(size.height)
27-
};
28-
for (FlutterEventSink sink in self.eventSinks) {
29-
if (sink)
30-
sink(event);
21+
if (self.size.width != size.width
22+
&& self.size.height != size.height) {
23+
[self.videoView setSize:size];
24+
NSDictionary *event = @{
25+
@"event": @"didChangeVideoSize",
26+
@"width": @(size.width),
27+
@"height": @(size.height)
28+
};
29+
for (FlutterEventSink sink in self.eventSinks) {
30+
if (sink)
31+
sink(event);
32+
}
33+
self.size = size;
3134
}
3235
}
3336

3437
- (FlutterError *_Nullable)onListenWithArguments:(id _Nullable)arguments eventSink:(FlutterEventSink)events {
3538
[self.eventSinks addObject:events];
3639
if (self.size.width != 0 && self.size.height != 0) {
3740
NSDictionary *event = @{
41+
@"event": @"didChangeVideoSize",
3842
@"width": @(self.size.width),
3943
@"height": @(self.size.height)
4044
};
@@ -44,8 +48,8 @@ - (FlutterError *_Nullable)onListenWithArguments:(id _Nullable)arguments eventSi
4448
}
4549

4650
- (FlutterError *_Nullable)onCancelWithArguments:(id _Nullable)arguments {
51+
[self.eventSinks removeAllObjects];
4752
return nil;
4853
}
4954

50-
51-
@end
55+
@end

0 commit comments

Comments
 (0)
0