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

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

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

Loading…
Cancel
Save