Changes On iOS

merge-requests/188/head
Aamir Muhammad 2 years ago
parent 9dcbdee156
commit 88ac343203

@ -22,8 +22,9 @@ class ChatCallProvider with ChangeNotifier, DiagnosticableTreeMixin {
// Video Call // Video Call
late RTCPeerConnection _pc; late RTCPeerConnection _pc;
late ChatProviderModel chatProvModel; late ChatProviderModel chatProvModel;
RTCVideoRenderer localVideoRenderer = RTCVideoRenderer(); RTCVideoRenderer? localVideoRenderer;
RTCVideoRenderer remoteRenderer = RTCVideoRenderer(); RTCVideoRenderer? remoteRenderer;
final AudioPlayer player = AudioPlayer(); final AudioPlayer player = AudioPlayer();
MediaStream? _localStream; MediaStream? _localStream;
late CallDataModel outGoingCallData; late CallDataModel outGoingCallData;
@ -206,21 +207,21 @@ class ChatCallProvider with ChangeNotifier, DiagnosticableTreeMixin {
isCamOff = false; isCamOff = false;
isMicOff = false; isMicOff = false;
isLoudSpeaker = false; isLoudSpeaker = false;
localVideoRenderer.srcObject = null;
remoteRenderer.srcObject = null;
isIncomingCall = false; isIncomingCall = false;
isOutGoingCall = false; isOutGoingCall = false;
if (_pc.connectionState == RTCPeerConnectionState.RTCPeerConnectionStateConnected) { if (_pc.connectionState == RTCPeerConnectionState.RTCPeerConnectionStateConnected) {
print("------------------ PC Stopped ----------------------------"); print("------------------ PC Stopped ----------------------------");
_pc.close(); _pc.close();
remoteRenderer.dispose(); _pc.dispose();
localVideoRenderer.dispose(); }
remoteRenderer!.dispose();
localVideoRenderer!.dispose();
localVideoRenderer = null;
remoteRenderer = null;
if (_localStream != null) { if (_localStream != null) {
_localStream!.dispose(); _localStream!.dispose();
_localStream = null; _localStream = null;
} }
_pc.dispose();
}
if (chatHubConnection != null && !isUserOnline) { if (chatHubConnection != null && !isUserOnline) {
chatHubConnection.stop(); chatHubConnection.stop();
} }
@ -240,18 +241,19 @@ class ChatCallProvider with ChangeNotifier, DiagnosticableTreeMixin {
isCamOff = false; isCamOff = false;
isMicOff = false; isMicOff = false;
isLoudSpeaker = false; isLoudSpeaker = false;
localVideoRenderer.srcObject = null;
remoteRenderer.srcObject = null;
if (_pc.connectionState == RTCPeerConnectionState.RTCPeerConnectionStateConnected) { if (_pc.connectionState == RTCPeerConnectionState.RTCPeerConnectionStateConnected) {
_pc.close(); _pc.close();
remoteRenderer.dispose(); _pc.dispose();
localVideoRenderer.dispose(); }
remoteRenderer!.dispose();
localVideoRenderer!.dispose();
localVideoRenderer = null;
remoteRenderer = null;
if (_localStream != null) { if (_localStream != null) {
_localStream!.dispose(); _localStream!.dispose();
_localStream = null; _localStream = null;
} }
_pc.dispose();
}
isOutGoingCall = false; isOutGoingCall = false;
isIncomingCall = false; isIncomingCall = false;
// await initStreams().whenComplete(() => notifyListeners()); // await initStreams().whenComplete(() => notifyListeners());
@ -428,7 +430,7 @@ class ChatCallProvider with ChangeNotifier, DiagnosticableTreeMixin {
await pc!.addStream(_localStream!); await pc!.addStream(_localStream!);
pc?.onConnectionState = (RTCPeerConnectionState state) {}; pc?.onConnectionState = (RTCPeerConnectionState state) {};
pc?.onAddStream = (MediaStream stream) { pc?.onAddStream = (MediaStream stream) {
remoteRenderer.srcObject = stream; remoteRenderer!.srcObject = stream;
notifyListeners(); notifyListeners();
}; };
pc!.onIceCandidate = (RTCIceCandidate e) async { pc!.onIceCandidate = (RTCIceCandidate e) async {
@ -537,7 +539,7 @@ class ChatCallProvider with ChangeNotifier, DiagnosticableTreeMixin {
void loudOn() { void loudOn() {
isLoudSpeaker = !isLoudSpeaker; isLoudSpeaker = !isLoudSpeaker;
remoteRenderer.srcObject?.getAudioTracks().forEach((track) { remoteRenderer!.srcObject?.getAudioTracks().forEach((track) {
if (isLoudSpeaker) { if (isLoudSpeaker) {
track.enableSpeakerphone(true); track.enableSpeakerphone(true);
} else { } else {
@ -556,16 +558,12 @@ class ChatCallProvider with ChangeNotifier, DiagnosticableTreeMixin {
///////////////// Incoming Call /////////////////////////////// ///////////////// Incoming Call ///////////////////////////////
Future<void> initStreams() async { Future<void> initStreams() async {
await localVideoRenderer.initialize(); localVideoRenderer = RTCVideoRenderer();
if (_localStream == null) { remoteRenderer = RTCVideoRenderer();
MediaStream? m; await localVideoRenderer!.initialize();
_localStream = m; _localStream ??= await navigator.mediaDevices.getUserMedia(isVideoCall ? videoConstraints : audioConstraints);
_localStream = await navigator.mediaDevices.getUserMedia(isVideoCall ? videoConstraints : audioConstraints); localVideoRenderer!.srcObject = _localStream;
} else { await remoteRenderer!.initialize();
_localStream = await navigator.mediaDevices.getUserMedia(isVideoCall ? videoConstraints : audioConstraints);
}
localVideoRenderer.srcObject = _localStream;
await remoteRenderer.initialize();
} }
Future<void> startIncomingCallViaKit({bool isVCall = true, required var inCallData}) async { Future<void> startIncomingCallViaKit({bool isVCall = true, required var inCallData}) async {

@ -32,10 +32,7 @@ class _StartCallPageState extends State<StartCallPage> {
@override @override
void initState() { void initState() {
cProv = Provider.of<ChatCallProvider>(context, listen: false);
provider = Provider.of<ChatProviderModel>(context, listen: false);
super.initState(); super.initState();
startCall();
} }
@override @override
@ -43,6 +40,14 @@ class _StartCallPageState extends State<StartCallPage> {
super.dispose(); super.dispose();
} }
@override
void didChangeDependencies() {
// TODO: implement didChangeDependencies
super.didChangeDependencies();
}
void startCall() async { void startCall() async {
IncomingCallModel? sessionData; IncomingCallModel? sessionData;
dynamic calls = await FlutterCallkitIncoming.activeCalls(); dynamic calls = await FlutterCallkitIncoming.activeCalls();
@ -117,6 +122,9 @@ class _StartCallPageState extends State<StartCallPage> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
cProv=context.read<ChatCallProvider>();
provider=context.read<ChatProviderModel>();
startCall();
return Scaffold( return Scaffold(
extendBody: true, extendBody: true,
body: Consumer2<ChatCallProvider, ChatProviderModel>( body: Consumer2<ChatCallProvider, ChatProviderModel>(
@ -137,7 +145,7 @@ class _StartCallPageState extends State<StartCallPage> {
if (!provider.isAudioCall && provider.isVideoCall) if (!provider.isAudioCall && provider.isVideoCall)
Positioned.fill( Positioned.fill(
child: RTCVideoView( child: RTCVideoView(
provider.remoteRenderer, provider.remoteRenderer!,
objectFit: RTCVideoViewObjectFit.RTCVideoViewObjectFitCover, objectFit: RTCVideoViewObjectFit.RTCVideoViewObjectFitCover,
key: const Key('remote'), key: const Key('remote'),
), ),
@ -157,7 +165,7 @@ class _StartCallPageState extends State<StartCallPage> {
height: 200, height: 200,
width: 140, width: 140,
child: RTCVideoView( child: RTCVideoView(
provider.localVideoRenderer, provider.localVideoRenderer!,
mirror: true, mirror: true,
objectFit: RTCVideoViewObjectFit.RTCVideoViewObjectFitCover, objectFit: RTCVideoViewObjectFit.RTCVideoViewObjectFitCover,
), ),
@ -328,8 +336,8 @@ class _StartCallPageState extends State<StartCallPage> {
provider.endCall(isUserOnline: cpm.isUserOnline).then((bool value) { provider.endCall(isUserOnline: cpm.isUserOnline).then((bool value) {
if (value) { if (value) {
Navigator.of(context).pop(); Navigator.of(context).pop();
print("Reintiiiiiiitttiiiiiiii"); // print("Reintiiiiiiitttiiiiiiii");
provider.initStreams(); // provider.initStreams();
} }
}); });
}, },
@ -362,7 +370,7 @@ class _StartCallPageState extends State<StartCallPage> {
if (!provider.isAudioCall && provider.isVideoCall) if (!provider.isAudioCall && provider.isVideoCall)
Positioned.fill( Positioned.fill(
child: RTCVideoView( child: RTCVideoView(
provider.remoteRenderer, provider.remoteRenderer!,
objectFit: RTCVideoViewObjectFit.RTCVideoViewObjectFitCover, objectFit: RTCVideoViewObjectFit.RTCVideoViewObjectFitCover,
key: const Key('remote'), key: const Key('remote'),
), ),
@ -382,7 +390,7 @@ class _StartCallPageState extends State<StartCallPage> {
height: 200, height: 200,
width: 140, width: 140,
child: RTCVideoView( child: RTCVideoView(
provider.localVideoRenderer, provider.localVideoRenderer!,
mirror: true, mirror: true,
objectFit: RTCVideoViewObjectFit.RTCVideoViewObjectFitCover, objectFit: RTCVideoViewObjectFit.RTCVideoViewObjectFitCover,
), ),

@ -29,9 +29,6 @@ class _OutGoingCallState extends State<OutGoingCall> {
@override @override
void initState() { void initState() {
chatProvider = Provider.of<ChatProviderModel>(context, listen: false);
callProvider = Provider.of<ChatCallProvider>(context, listen: false);
init();
super.initState(); super.initState();
} }
@ -46,14 +43,21 @@ class _OutGoingCallState extends State<OutGoingCall> {
super.dispose(); super.dispose();
} }
@override
void didChangeDependencies() {
// TODO: implement didChangeDependencies
super.didChangeDependencies();
}
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
chatProvider = Provider.of<ChatProviderModel>(context, listen: true);
callProvider = Provider.of<ChatCallProvider>(context, listen: true);
init();
return Scaffold( return Scaffold(
body: Consumer<ChatCallProvider>(builder: (BuildContext context, ChatCallProvider chatcp, Widget? child) { body: Consumer<ChatCallProvider>(builder: (BuildContext context, ChatCallProvider chatcp, Widget? child) {
if (chatcp.isCallEnded) { if (chatcp.isCallEnded) {
Navigator.pop(context); Navigator.pop(context);
print("Reintiiiiiiittt");
chatcp.initStreams();
} }
return Stack( return Stack(
alignment: FractionalOffset.center, alignment: FractionalOffset.center,
@ -61,7 +65,7 @@ class _OutGoingCallState extends State<OutGoingCall> {
if (chatcp.isVideoCall) if (chatcp.isVideoCall)
Positioned.fill( Positioned.fill(
child: RTCVideoView( child: RTCVideoView(
chatcp.localVideoRenderer, chatcp.localVideoRenderer!,
objectFit: RTCVideoViewObjectFit.RTCVideoViewObjectFitCover, objectFit: RTCVideoViewObjectFit.RTCVideoViewObjectFitCover,
), ),
), ),
@ -150,8 +154,8 @@ class _OutGoingCallState extends State<OutGoingCall> {
chatcp.endCall(isUserOnline: chatProvider.isUserOnline).then((bool value) { chatcp.endCall(isUserOnline: chatProvider.isUserOnline).then((bool value) {
if (value) { if (value) {
Navigator.of(context).pop(); Navigator.of(context).pop();
print("Reintiiiiiiitttzzzz"); // print("Reintiiiiiiitttzzzz");
chatcp.initStreams(); // chatcp.initStreams();
} }
}); });
}, },

Loading…
Cancel
Save