|  |  |  | @ -8,10 +8,15 @@ import 'package:flutter/material.dart'; | 
		
	
		
			
				|  |  |  |  | import 'package:flutter_callkit_incoming/flutter_callkit_incoming.dart'; | 
		
	
		
			
				|  |  |  |  | import 'package:flutter_svg/flutter_svg.dart'; | 
		
	
		
			
				|  |  |  |  | import 'package:flutter_webrtc/flutter_webrtc.dart'; | 
		
	
		
			
				|  |  |  |  | import 'package:mohem_flutter_app/api/chat/chat_api_client.dart'; | 
		
	
		
			
				|  |  |  |  | import 'package:mohem_flutter_app/app_state/app_state.dart'; | 
		
	
		
			
				|  |  |  |  | import 'package:mohem_flutter_app/classes/colors.dart'; | 
		
	
		
			
				|  |  |  |  | import 'package:mohem_flutter_app/classes/consts.dart'; | 
		
	
		
			
				|  |  |  |  | import 'package:mohem_flutter_app/classes/utils.dart'; | 
		
	
		
			
				|  |  |  |  | import 'package:mohem_flutter_app/extensions/int_extensions.dart'; | 
		
	
		
			
				|  |  |  |  | import 'package:mohem_flutter_app/main.dart'; | 
		
	
		
			
				|  |  |  |  | import 'package:mohem_flutter_app/models/chat/call.dart'; | 
		
	
		
			
				|  |  |  |  | import 'package:mohem_flutter_app/models/chat/get_single_user_chat_list_model.dart'; | 
		
	
		
			
				|  |  |  |  | import 'package:mohem_flutter_app/models/chat/get_user_login_token_model.dart'; | 
		
	
		
			
				|  |  |  |  | import 'package:mohem_flutter_app/models/chat/incoming_call_model.dart'; | 
		
	
		
			
				|  |  |  |  | import 'package:mohem_flutter_app/provider/chat_call_provider.dart'; | 
		
	
	
		
			
				
					|  |  |  | @ -46,7 +51,7 @@ class _StartCallPageState extends State<StartCallPage> { | 
		
	
		
			
				|  |  |  |  |     IncomingCallModel? sessionData; | 
		
	
		
			
				|  |  |  |  |     dynamic calls = await FlutterCallkitIncoming.activeCalls(); | 
		
	
		
			
				|  |  |  |  |     if (calls.isNotEmpty) { | 
		
	
		
			
				|  |  |  |  |       sessionData =  IncomingCallModel.fromRawJson(jsonEncode(calls[0])); | 
		
	
		
			
				|  |  |  |  |       sessionData = IncomingCallModel.fromRawJson(jsonEncode(calls[0])); | 
		
	
		
			
				|  |  |  |  |       print(sessionData.toRawJson()); | 
		
	
		
			
				|  |  |  |  |       if (provider.isUserOnline) { | 
		
	
		
			
				|  |  |  |  |         cProv.isUserOnline = provider.isUserOnline; | 
		
	
	
		
			
				
					|  |  |  | @ -75,7 +80,47 @@ class _StartCallPageState extends State<StartCallPage> { | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  |   } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |   void startIosCall() {} | 
		
	
		
			
				|  |  |  |  |   void startIosCall() async { | 
		
	
		
			
				|  |  |  |  |     IosCallPayload _iosCallPayload = IosCallPayload.fromRawJson(await Utils.getStringFromPrefs("iosCallPayload")); | 
		
	
		
			
				|  |  |  |  |     var userID = _iosCallPayload!.callData!.split("-").first; | 
		
	
		
			
				|  |  |  |  |     var callType = _iosCallPayload!.callData!.split("-").last; | 
		
	
		
			
				|  |  |  |  |     SingleUserChatModel inCallData = SingleUserChatModel( | 
		
	
		
			
				|  |  |  |  |       targetUserName: _iosCallPayload.incomingCallerName, | 
		
	
		
			
				|  |  |  |  |       chatEventId: 3, | 
		
	
		
			
				|  |  |  |  |       targetUserId: int.parse(_iosCallPayload.incomingCallerId!), | 
		
	
		
			
				|  |  |  |  |       currentUserId: int.parse(userID), | 
		
	
		
			
				|  |  |  |  |     ); | 
		
	
		
			
				|  |  |  |  |     if (provider.isUserOnline) { | 
		
	
		
			
				|  |  |  |  |       cProv.isUserOnline = provider.isUserOnline; | 
		
	
		
			
				|  |  |  |  |       if (kDebugMode) { | 
		
	
		
			
				|  |  |  |  |         print("====== Processing Incoming Call in Online State ========="); | 
		
	
		
			
				|  |  |  |  |       } | 
		
	
		
			
				|  |  |  |  |       await cProv.startIncomingCallViaKit(inCallData: inCallData.toJson(), isVCall: callType == "video" ? true : false); | 
		
	
		
			
				|  |  |  |  |       cProv.init(); | 
		
	
		
			
				|  |  |  |  |       isCallConnected = true; | 
		
	
		
			
				|  |  |  |  |     } else { | 
		
	
		
			
				|  |  |  |  |       if (kDebugMode) { | 
		
	
		
			
				|  |  |  |  |         print("====== Processing Incoming Call ========="); | 
		
	
		
			
				|  |  |  |  |       } | 
		
	
		
			
				|  |  |  |  |       cProv.isUserOnline = provider.isUserOnline; | 
		
	
		
			
				|  |  |  |  |       UserAutoLoginModel userLoginResponse = await ChatApiClient().getUserCallToken(userid: userID); | 
		
	
		
			
				|  |  |  |  |       if (userLoginResponse.response != null) { | 
		
	
		
			
				|  |  |  |  |         AppState().setchatUserDetails = userLoginResponse; | 
		
	
		
			
				|  |  |  |  |         Utils.saveStringFromPrefs("userLoginChatDetails", jsonEncode(userLoginResponse.response)); | 
		
	
		
			
				|  |  |  |  |        | 
		
	
		
			
				|  |  |  |  |         await cProv.startIncomingCallViaKit(inCallData: inCallData.toJson(), isVCall: callType == "video" ? true : false); | 
		
	
		
			
				|  |  |  |  |         try { | 
		
	
		
			
				|  |  |  |  |           AppState().setchatUserDetails = UserAutoLoginModel(response: userLoginResponse.response, errorResponses: null); | 
		
	
		
			
				|  |  |  |  |           await provider.buildHubConnection(context: context, ccProvider: cProv).whenComplete(() { | 
		
	
		
			
				|  |  |  |  |             cProv.init(); | 
		
	
		
			
				|  |  |  |  |             isCallConnected = true; | 
		
	
		
			
				|  |  |  |  |           }); | 
		
	
		
			
				|  |  |  |  |         } catch (e) { | 
		
	
		
			
				|  |  |  |  |           logger.w(e); | 
		
	
		
			
				|  |  |  |  |         } | 
		
	
		
			
				|  |  |  |  |       } | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  |   } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |   @override | 
		
	
		
			
				|  |  |  |  |   Widget build(BuildContext context) { | 
		
	
	
		
			
				
					|  |  |  | @ -92,459 +137,459 @@ class _StartCallPageState extends State<StartCallPage> { | 
		
	
		
			
				|  |  |  |  |         builder: (BuildContext context, ChatCallProvider provider, ChatProviderModel cpm, Widget? child) { | 
		
	
		
			
				|  |  |  |  |           return provider.isIncomingCallLoader | 
		
	
		
			
				|  |  |  |  |               ? const SizedBox( | 
		
	
		
			
				|  |  |  |  |             width: double.infinity, | 
		
	
		
			
				|  |  |  |  |             height: double.infinity, | 
		
	
		
			
				|  |  |  |  |             child: Center(child: CircularProgressIndicator()), | 
		
	
		
			
				|  |  |  |  |           ) | 
		
	
		
			
				|  |  |  |  |                   width: double.infinity, | 
		
	
		
			
				|  |  |  |  |                   height: double.infinity, | 
		
	
		
			
				|  |  |  |  |                   child: Center(child: CircularProgressIndicator()), | 
		
	
		
			
				|  |  |  |  |                 ) | 
		
	
		
			
				|  |  |  |  |               : provider.isIncomingCall | 
		
	
		
			
				|  |  |  |  |               ? SizedBox( | 
		
	
		
			
				|  |  |  |  |             width: double.infinity, | 
		
	
		
			
				|  |  |  |  |             height: double.infinity, | 
		
	
		
			
				|  |  |  |  |             child: Stack( | 
		
	
		
			
				|  |  |  |  |               alignment: FractionalOffset.center, | 
		
	
		
			
				|  |  |  |  |               children: <Widget>[ | 
		
	
		
			
				|  |  |  |  |                 if (!provider.isAudioCall && provider.isVideoCall) | 
		
	
		
			
				|  |  |  |  |                   Positioned.fill( | 
		
	
		
			
				|  |  |  |  |                     child: RTCVideoView( | 
		
	
		
			
				|  |  |  |  |                       provider.remoteRenderer!, | 
		
	
		
			
				|  |  |  |  |                       objectFit: RTCVideoViewObjectFit.RTCVideoViewObjectFitCover, | 
		
	
		
			
				|  |  |  |  |                       key: const Key('remote'), | 
		
	
		
			
				|  |  |  |  |                     ), | 
		
	
		
			
				|  |  |  |  |                   ), | 
		
	
		
			
				|  |  |  |  |                 if (provider.isVideoCall) | 
		
	
		
			
				|  |  |  |  |                   DraggableWidget( | 
		
	
		
			
				|  |  |  |  |                     bottomMargin: 20, | 
		
	
		
			
				|  |  |  |  |                     topMargin: 40, | 
		
	
		
			
				|  |  |  |  |                     intialVisibility: true, | 
		
	
		
			
				|  |  |  |  |                     horizontalSpace: 20, | 
		
	
		
			
				|  |  |  |  |                     shadowBorderRadius: 50, | 
		
	
		
			
				|  |  |  |  |                     initialPosition: AnchoringPosition.topLeft, | 
		
	
		
			
				|  |  |  |  |                     dragController: dragController, | 
		
	
		
			
				|  |  |  |  |                     normalShadow: const BoxShadow(spreadRadius: 0.0, blurRadius: 0.0), | 
		
	
		
			
				|  |  |  |  |                     draggingShadow: const BoxShadow(spreadRadius: 0.0, blurRadius: 0.0), | 
		
	
		
			
				|  |  |  |  |                     child: SizedBox( | 
		
	
		
			
				|  |  |  |  |                       height: 200, | 
		
	
		
			
				|  |  |  |  |                       width: 140, | 
		
	
		
			
				|  |  |  |  |                       child: RTCVideoView( | 
		
	
		
			
				|  |  |  |  |                         provider.localVideoRenderer!, | 
		
	
		
			
				|  |  |  |  |                         mirror: true, | 
		
	
		
			
				|  |  |  |  |                         objectFit: RTCVideoViewObjectFit.RTCVideoViewObjectFitCover, | 
		
	
		
			
				|  |  |  |  |                       ), | 
		
	
		
			
				|  |  |  |  |                     ), | 
		
	
		
			
				|  |  |  |  |                   ), | 
		
	
		
			
				|  |  |  |  |                 if (!provider.isVideoCall) | 
		
	
		
			
				|  |  |  |  |                   Positioned.fill( | 
		
	
		
			
				|  |  |  |  |                     child: ClipRect( | 
		
	
		
			
				|  |  |  |  |                       child: BackdropFilter( | 
		
	
		
			
				|  |  |  |  |                         filter: ImageFilter.blur(sigmaX: 5.0, sigmaY: 5.0), | 
		
	
		
			
				|  |  |  |  |                         child: Container( | 
		
	
		
			
				|  |  |  |  |                           decoration: BoxDecoration( | 
		
	
		
			
				|  |  |  |  |                             color: MyColors.grey57Color.withOpacity( | 
		
	
		
			
				|  |  |  |  |                               0.3, | 
		
	
		
			
				|  |  |  |  |                   ? SizedBox( | 
		
	
		
			
				|  |  |  |  |                       width: double.infinity, | 
		
	
		
			
				|  |  |  |  |                       height: double.infinity, | 
		
	
		
			
				|  |  |  |  |                       child: Stack( | 
		
	
		
			
				|  |  |  |  |                         alignment: FractionalOffset.center, | 
		
	
		
			
				|  |  |  |  |                         children: <Widget>[ | 
		
	
		
			
				|  |  |  |  |                           if (!provider.isAudioCall && provider.isVideoCall) | 
		
	
		
			
				|  |  |  |  |                             Positioned.fill( | 
		
	
		
			
				|  |  |  |  |                               child: RTCVideoView( | 
		
	
		
			
				|  |  |  |  |                                 provider.remoteRenderer!, | 
		
	
		
			
				|  |  |  |  |                                 objectFit: RTCVideoViewObjectFit.RTCVideoViewObjectFitCover, | 
		
	
		
			
				|  |  |  |  |                                 key: const Key('remote'), | 
		
	
		
			
				|  |  |  |  |                               ), | 
		
	
		
			
				|  |  |  |  |                             ), | 
		
	
		
			
				|  |  |  |  |                           ), | 
		
	
		
			
				|  |  |  |  |                           child: Column( | 
		
	
		
			
				|  |  |  |  |                             crossAxisAlignment: CrossAxisAlignment.start, | 
		
	
		
			
				|  |  |  |  |                             mainAxisSize: MainAxisSize.max, | 
		
	
		
			
				|  |  |  |  |                             children: <Widget>[ | 
		
	
		
			
				|  |  |  |  |                               40.height, | 
		
	
		
			
				|  |  |  |  |                               Row( | 
		
	
		
			
				|  |  |  |  |                                 crossAxisAlignment: CrossAxisAlignment.center, | 
		
	
		
			
				|  |  |  |  |                                 mainAxisAlignment: MainAxisAlignment.center, | 
		
	
		
			
				|  |  |  |  |                                 children: <Widget>[ | 
		
	
		
			
				|  |  |  |  |                                   Container( | 
		
	
		
			
				|  |  |  |  |                                     margin: const EdgeInsets.all(21.0), | 
		
	
		
			
				|  |  |  |  |                                     child: Container( | 
		
	
		
			
				|  |  |  |  |                                       margin: const EdgeInsets.only( | 
		
	
		
			
				|  |  |  |  |                                         left: 10.0, | 
		
	
		
			
				|  |  |  |  |                                         right: 10.0, | 
		
	
		
			
				|  |  |  |  |                           if (provider.isVideoCall) | 
		
	
		
			
				|  |  |  |  |                             DraggableWidget( | 
		
	
		
			
				|  |  |  |  |                               bottomMargin: 20, | 
		
	
		
			
				|  |  |  |  |                               topMargin: 40, | 
		
	
		
			
				|  |  |  |  |                               intialVisibility: true, | 
		
	
		
			
				|  |  |  |  |                               horizontalSpace: 20, | 
		
	
		
			
				|  |  |  |  |                               shadowBorderRadius: 50, | 
		
	
		
			
				|  |  |  |  |                               initialPosition: AnchoringPosition.topLeft, | 
		
	
		
			
				|  |  |  |  |                               dragController: dragController, | 
		
	
		
			
				|  |  |  |  |                               normalShadow: const BoxShadow(spreadRadius: 0.0, blurRadius: 0.0), | 
		
	
		
			
				|  |  |  |  |                               draggingShadow: const BoxShadow(spreadRadius: 0.0, blurRadius: 0.0), | 
		
	
		
			
				|  |  |  |  |                               child: SizedBox( | 
		
	
		
			
				|  |  |  |  |                                 height: 200, | 
		
	
		
			
				|  |  |  |  |                                 width: 140, | 
		
	
		
			
				|  |  |  |  |                                 child: RTCVideoView( | 
		
	
		
			
				|  |  |  |  |                                   provider.localVideoRenderer!, | 
		
	
		
			
				|  |  |  |  |                                   mirror: true, | 
		
	
		
			
				|  |  |  |  |                                   objectFit: RTCVideoViewObjectFit.RTCVideoViewObjectFitCover, | 
		
	
		
			
				|  |  |  |  |                                 ), | 
		
	
		
			
				|  |  |  |  |                               ), | 
		
	
		
			
				|  |  |  |  |                             ), | 
		
	
		
			
				|  |  |  |  |                           if (!provider.isVideoCall) | 
		
	
		
			
				|  |  |  |  |                             Positioned.fill( | 
		
	
		
			
				|  |  |  |  |                               child: ClipRect( | 
		
	
		
			
				|  |  |  |  |                                 child: BackdropFilter( | 
		
	
		
			
				|  |  |  |  |                                   filter: ImageFilter.blur(sigmaX: 5.0, sigmaY: 5.0), | 
		
	
		
			
				|  |  |  |  |                                   child: Container( | 
		
	
		
			
				|  |  |  |  |                                     decoration: BoxDecoration( | 
		
	
		
			
				|  |  |  |  |                                       color: MyColors.grey57Color.withOpacity( | 
		
	
		
			
				|  |  |  |  |                                         0.3, | 
		
	
		
			
				|  |  |  |  |                                       ), | 
		
	
		
			
				|  |  |  |  |                                       child: Column( | 
		
	
		
			
				|  |  |  |  |                                         crossAxisAlignment: CrossAxisAlignment.center, | 
		
	
		
			
				|  |  |  |  |                                         mainAxisSize: MainAxisSize.min, | 
		
	
		
			
				|  |  |  |  |                                         mainAxisAlignment: MainAxisAlignment.spaceAround, | 
		
	
		
			
				|  |  |  |  |                                         children: <Widget>[ | 
		
	
		
			
				|  |  |  |  |                                           SvgPicture.asset( | 
		
	
		
			
				|  |  |  |  |                                             "assets/images/user.svg", | 
		
	
		
			
				|  |  |  |  |                                             height: 70, | 
		
	
		
			
				|  |  |  |  |                                             width: 70, | 
		
	
		
			
				|  |  |  |  |                                             fit: BoxFit.cover, | 
		
	
		
			
				|  |  |  |  |                                           ), | 
		
	
		
			
				|  |  |  |  |                                           10.height, | 
		
	
		
			
				|  |  |  |  |                                           Text( | 
		
	
		
			
				|  |  |  |  |                                             provider.incomingCallData.targetUserName!, | 
		
	
		
			
				|  |  |  |  |                                             style: const TextStyle( | 
		
	
		
			
				|  |  |  |  |                                               fontSize: 21, | 
		
	
		
			
				|  |  |  |  |                                               decoration: TextDecoration.none, | 
		
	
		
			
				|  |  |  |  |                                               fontWeight: FontWeight.bold, | 
		
	
		
			
				|  |  |  |  |                                               color: MyColors.white, | 
		
	
		
			
				|  |  |  |  |                                               letterSpacing: -1.26, | 
		
	
		
			
				|  |  |  |  |                                               height: 23 / 12, | 
		
	
		
			
				|  |  |  |  |                                             ), | 
		
	
		
			
				|  |  |  |  |                                           ), | 
		
	
		
			
				|  |  |  |  |                                           const Text( | 
		
	
		
			
				|  |  |  |  |                                             "On Call", | 
		
	
		
			
				|  |  |  |  |                                             style: TextStyle( | 
		
	
		
			
				|  |  |  |  |                                               fontSize: 16, | 
		
	
		
			
				|  |  |  |  |                                               decoration: TextDecoration.none, | 
		
	
		
			
				|  |  |  |  |                                               fontWeight: FontWeight.w600, | 
		
	
		
			
				|  |  |  |  |                                               color: Color( | 
		
	
		
			
				|  |  |  |  |                                                 0xffC6C6C6, | 
		
	
		
			
				|  |  |  |  |                                     ), | 
		
	
		
			
				|  |  |  |  |                                     child: Column( | 
		
	
		
			
				|  |  |  |  |                                       crossAxisAlignment: CrossAxisAlignment.start, | 
		
	
		
			
				|  |  |  |  |                                       mainAxisSize: MainAxisSize.max, | 
		
	
		
			
				|  |  |  |  |                                       children: <Widget>[ | 
		
	
		
			
				|  |  |  |  |                                         40.height, | 
		
	
		
			
				|  |  |  |  |                                         Row( | 
		
	
		
			
				|  |  |  |  |                                           crossAxisAlignment: CrossAxisAlignment.center, | 
		
	
		
			
				|  |  |  |  |                                           mainAxisAlignment: MainAxisAlignment.center, | 
		
	
		
			
				|  |  |  |  |                                           children: <Widget>[ | 
		
	
		
			
				|  |  |  |  |                                             Container( | 
		
	
		
			
				|  |  |  |  |                                               margin: const EdgeInsets.all(21.0), | 
		
	
		
			
				|  |  |  |  |                                               child: Container( | 
		
	
		
			
				|  |  |  |  |                                                 margin: const EdgeInsets.only( | 
		
	
		
			
				|  |  |  |  |                                                   left: 10.0, | 
		
	
		
			
				|  |  |  |  |                                                   right: 10.0, | 
		
	
		
			
				|  |  |  |  |                                                 ), | 
		
	
		
			
				|  |  |  |  |                                                 child: Column( | 
		
	
		
			
				|  |  |  |  |                                                   crossAxisAlignment: CrossAxisAlignment.center, | 
		
	
		
			
				|  |  |  |  |                                                   mainAxisSize: MainAxisSize.min, | 
		
	
		
			
				|  |  |  |  |                                                   mainAxisAlignment: MainAxisAlignment.spaceAround, | 
		
	
		
			
				|  |  |  |  |                                                   children: <Widget>[ | 
		
	
		
			
				|  |  |  |  |                                                     SvgPicture.asset( | 
		
	
		
			
				|  |  |  |  |                                                       "assets/images/user.svg", | 
		
	
		
			
				|  |  |  |  |                                                       height: 70, | 
		
	
		
			
				|  |  |  |  |                                                       width: 70, | 
		
	
		
			
				|  |  |  |  |                                                       fit: BoxFit.cover, | 
		
	
		
			
				|  |  |  |  |                                                     ), | 
		
	
		
			
				|  |  |  |  |                                                     10.height, | 
		
	
		
			
				|  |  |  |  |                                                     Text( | 
		
	
		
			
				|  |  |  |  |                                                       provider.incomingCallData.targetUserName!, | 
		
	
		
			
				|  |  |  |  |                                                       style: const TextStyle( | 
		
	
		
			
				|  |  |  |  |                                                         fontSize: 21, | 
		
	
		
			
				|  |  |  |  |                                                         decoration: TextDecoration.none, | 
		
	
		
			
				|  |  |  |  |                                                         fontWeight: FontWeight.bold, | 
		
	
		
			
				|  |  |  |  |                                                         color: MyColors.white, | 
		
	
		
			
				|  |  |  |  |                                                         letterSpacing: -1.26, | 
		
	
		
			
				|  |  |  |  |                                                         height: 23 / 12, | 
		
	
		
			
				|  |  |  |  |                                                       ), | 
		
	
		
			
				|  |  |  |  |                                                     ), | 
		
	
		
			
				|  |  |  |  |                                                     const Text( | 
		
	
		
			
				|  |  |  |  |                                                       "On Call", | 
		
	
		
			
				|  |  |  |  |                                                       style: TextStyle( | 
		
	
		
			
				|  |  |  |  |                                                         fontSize: 16, | 
		
	
		
			
				|  |  |  |  |                                                         decoration: TextDecoration.none, | 
		
	
		
			
				|  |  |  |  |                                                         fontWeight: FontWeight.w600, | 
		
	
		
			
				|  |  |  |  |                                                         color: Color( | 
		
	
		
			
				|  |  |  |  |                                                           0xffC6C6C6, | 
		
	
		
			
				|  |  |  |  |                                                         ), | 
		
	
		
			
				|  |  |  |  |                                                         letterSpacing: -0.48, | 
		
	
		
			
				|  |  |  |  |                                                         height: 23 / 24, | 
		
	
		
			
				|  |  |  |  |                                                       ), | 
		
	
		
			
				|  |  |  |  |                                                     ), | 
		
	
		
			
				|  |  |  |  |                                                     const SizedBox( | 
		
	
		
			
				|  |  |  |  |                                                       height: 2, | 
		
	
		
			
				|  |  |  |  |                                                     ), | 
		
	
		
			
				|  |  |  |  |                                                   ], | 
		
	
		
			
				|  |  |  |  |                                                 ), | 
		
	
		
			
				|  |  |  |  |                                               ), | 
		
	
		
			
				|  |  |  |  |                                               letterSpacing: -0.48, | 
		
	
		
			
				|  |  |  |  |                                               height: 23 / 24, | 
		
	
		
			
				|  |  |  |  |                                             ), | 
		
	
		
			
				|  |  |  |  |                                           ), | 
		
	
		
			
				|  |  |  |  |                                           const SizedBox( | 
		
	
		
			
				|  |  |  |  |                                             height: 2, | 
		
	
		
			
				|  |  |  |  |                                           ), | 
		
	
		
			
				|  |  |  |  |                                         ], | 
		
	
		
			
				|  |  |  |  |                                       ), | 
		
	
		
			
				|  |  |  |  |                                           ], | 
		
	
		
			
				|  |  |  |  |                                         ), | 
		
	
		
			
				|  |  |  |  |                                       ], | 
		
	
		
			
				|  |  |  |  |                                     ), | 
		
	
		
			
				|  |  |  |  |                                   ), | 
		
	
		
			
				|  |  |  |  |                                 ), | 
		
	
		
			
				|  |  |  |  |                               ), | 
		
	
		
			
				|  |  |  |  |                             ), | 
		
	
		
			
				|  |  |  |  |                           Align( | 
		
	
		
			
				|  |  |  |  |                             alignment: Alignment.bottomCenter, | 
		
	
		
			
				|  |  |  |  |                             child: Container( | 
		
	
		
			
				|  |  |  |  |                               padding: const EdgeInsets.only( | 
		
	
		
			
				|  |  |  |  |                                 bottom: 20, | 
		
	
		
			
				|  |  |  |  |                                 left: 40, | 
		
	
		
			
				|  |  |  |  |                                 right: 40, | 
		
	
		
			
				|  |  |  |  |                               ), | 
		
	
		
			
				|  |  |  |  |                               child: Row( | 
		
	
		
			
				|  |  |  |  |                                 mainAxisSize: MainAxisSize.max, | 
		
	
		
			
				|  |  |  |  |                                 mainAxisAlignment: MainAxisAlignment.spaceBetween, | 
		
	
		
			
				|  |  |  |  |                                 children: <Widget>[ | 
		
	
		
			
				|  |  |  |  |                                   // if (provider.isVideoCall) | 
		
	
		
			
				|  |  |  |  |                                   RawMaterialButton( | 
		
	
		
			
				|  |  |  |  |                                     constraints: const BoxConstraints(), | 
		
	
		
			
				|  |  |  |  |                                     onPressed: () { | 
		
	
		
			
				|  |  |  |  |                                       provider.loudOn(); | 
		
	
		
			
				|  |  |  |  |                                     }, | 
		
	
		
			
				|  |  |  |  |                                     elevation: 2.0, | 
		
	
		
			
				|  |  |  |  |                                     fillColor: provider.isLoudSpeaker ? MyColors.textMixColor : Colors.grey, | 
		
	
		
			
				|  |  |  |  |                                     padding: const EdgeInsets.all( | 
		
	
		
			
				|  |  |  |  |                                       10.0, | 
		
	
		
			
				|  |  |  |  |                                     ), | 
		
	
		
			
				|  |  |  |  |                                     shape: const CircleBorder(), | 
		
	
		
			
				|  |  |  |  |                                     child: const Icon( | 
		
	
		
			
				|  |  |  |  |                                       Icons.volume_up, | 
		
	
		
			
				|  |  |  |  |                                       color: MyColors.white, | 
		
	
		
			
				|  |  |  |  |                                       size: 30.0, | 
		
	
		
			
				|  |  |  |  |                                     ), | 
		
	
		
			
				|  |  |  |  |                                   ), | 
		
	
		
			
				|  |  |  |  |                                   RawMaterialButton( | 
		
	
		
			
				|  |  |  |  |                                     constraints: const BoxConstraints(), | 
		
	
		
			
				|  |  |  |  |                                     onPressed: () { | 
		
	
		
			
				|  |  |  |  |                                       provider.camOff(); | 
		
	
		
			
				|  |  |  |  |                                     }, | 
		
	
		
			
				|  |  |  |  |                                     elevation: 2.0, | 
		
	
		
			
				|  |  |  |  |                                     fillColor: provider.isCamOff ? MyColors.textMixColor : Colors.grey, | 
		
	
		
			
				|  |  |  |  |                                     padding: const EdgeInsets.all( | 
		
	
		
			
				|  |  |  |  |                                       10.0, | 
		
	
		
			
				|  |  |  |  |                                     ), | 
		
	
		
			
				|  |  |  |  |                                     shape: const CircleBorder(), | 
		
	
		
			
				|  |  |  |  |                                     child: Icon( | 
		
	
		
			
				|  |  |  |  |                                       provider.isCamOff ? Icons.videocam_off : Icons.videocam, | 
		
	
		
			
				|  |  |  |  |                                       color: MyColors.white, | 
		
	
		
			
				|  |  |  |  |                                       size: 30.0, | 
		
	
		
			
				|  |  |  |  |                                     ), | 
		
	
		
			
				|  |  |  |  |                                   ), | 
		
	
		
			
				|  |  |  |  |                                   RawMaterialButton( | 
		
	
		
			
				|  |  |  |  |                                     constraints: const BoxConstraints(), | 
		
	
		
			
				|  |  |  |  |                                     onPressed: () { | 
		
	
		
			
				|  |  |  |  |                                       provider.switchCamera(); | 
		
	
		
			
				|  |  |  |  |                                     }, | 
		
	
		
			
				|  |  |  |  |                                     elevation: 2.0, | 
		
	
		
			
				|  |  |  |  |                                     fillColor: provider.isFrontCamera ? Colors.grey : MyColors.textMixColor, | 
		
	
		
			
				|  |  |  |  |                                     padding: const EdgeInsets.all( | 
		
	
		
			
				|  |  |  |  |                                       10.0, | 
		
	
		
			
				|  |  |  |  |                                     ), | 
		
	
		
			
				|  |  |  |  |                                     shape: const CircleBorder(), | 
		
	
		
			
				|  |  |  |  |                                     child: Icon( | 
		
	
		
			
				|  |  |  |  |                                       provider.isFrontCamera ? Icons.switch_camera_outlined : Icons.switch_camera, | 
		
	
		
			
				|  |  |  |  |                                       color: MyColors.white, | 
		
	
		
			
				|  |  |  |  |                                       size: 30.0, | 
		
	
		
			
				|  |  |  |  |                                     ), | 
		
	
		
			
				|  |  |  |  |                                   ), | 
		
	
		
			
				|  |  |  |  |                                   RawMaterialButton( | 
		
	
		
			
				|  |  |  |  |                                     constraints: const BoxConstraints(), | 
		
	
		
			
				|  |  |  |  |                                     onPressed: () { | 
		
	
		
			
				|  |  |  |  |                                       provider.micOff(); | 
		
	
		
			
				|  |  |  |  |                                     }, | 
		
	
		
			
				|  |  |  |  |                                     elevation: 2.0, | 
		
	
		
			
				|  |  |  |  |                                     fillColor: provider.isMicOff ? MyColors.textMixColor : Colors.grey, | 
		
	
		
			
				|  |  |  |  |                                     padding: const EdgeInsets.all( | 
		
	
		
			
				|  |  |  |  |                                       10.0, | 
		
	
		
			
				|  |  |  |  |                                     ), | 
		
	
		
			
				|  |  |  |  |                                     shape: const CircleBorder(), | 
		
	
		
			
				|  |  |  |  |                                     child: Icon( | 
		
	
		
			
				|  |  |  |  |                                       provider.isMicOff ? Icons.mic_off : Icons.mic, | 
		
	
		
			
				|  |  |  |  |                                       color: MyColors.white, | 
		
	
		
			
				|  |  |  |  |                                       size: 30.0, | 
		
	
		
			
				|  |  |  |  |                                     ), | 
		
	
		
			
				|  |  |  |  |                                   ), | 
		
	
		
			
				|  |  |  |  |                                   RawMaterialButton( | 
		
	
		
			
				|  |  |  |  |                                     constraints: const BoxConstraints(), | 
		
	
		
			
				|  |  |  |  |                                     onPressed: () { | 
		
	
		
			
				|  |  |  |  |                                       provider.endCall(isUserOnline: cpm.isUserOnline).then((bool value) { | 
		
	
		
			
				|  |  |  |  |                                         if (value) { | 
		
	
		
			
				|  |  |  |  |                                           Navigator.of(context).pop(); | 
		
	
		
			
				|  |  |  |  |                                           // print("Reintiiiiiiitttiiiiiiii"); | 
		
	
		
			
				|  |  |  |  |                                           // provider.initStreams(); | 
		
	
		
			
				|  |  |  |  |                                         } | 
		
	
		
			
				|  |  |  |  |                                       }); | 
		
	
		
			
				|  |  |  |  |                                     }, | 
		
	
		
			
				|  |  |  |  |                                     elevation: 2.0, | 
		
	
		
			
				|  |  |  |  |                                     fillColor: MyColors.redA3Color, | 
		
	
		
			
				|  |  |  |  |                                     padding: const EdgeInsets.all( | 
		
	
		
			
				|  |  |  |  |                                       10.0, | 
		
	
		
			
				|  |  |  |  |                                     ), | 
		
	
		
			
				|  |  |  |  |                                     shape: const CircleBorder(), | 
		
	
		
			
				|  |  |  |  |                                     child: const Icon( | 
		
	
		
			
				|  |  |  |  |                                       Icons.call_end, | 
		
	
		
			
				|  |  |  |  |                                       color: MyColors.white, | 
		
	
		
			
				|  |  |  |  |                                       size: 30.0, | 
		
	
		
			
				|  |  |  |  |                                     ), | 
		
	
		
			
				|  |  |  |  |                                   ), | 
		
	
		
			
				|  |  |  |  |                                 ], | 
		
	
		
			
				|  |  |  |  |                               ), | 
		
	
		
			
				|  |  |  |  |                             ], | 
		
	
		
			
				|  |  |  |  |                           ), | 
		
	
		
			
				|  |  |  |  |                         ), | 
		
	
		
			
				|  |  |  |  |                       ), | 
		
	
		
			
				|  |  |  |  |                     ), | 
		
	
		
			
				|  |  |  |  |                   ), | 
		
	
		
			
				|  |  |  |  |                 Align( | 
		
	
		
			
				|  |  |  |  |                   alignment: Alignment.bottomCenter, | 
		
	
		
			
				|  |  |  |  |                   child: Container( | 
		
	
		
			
				|  |  |  |  |                     padding: const EdgeInsets.only( | 
		
	
		
			
				|  |  |  |  |                       bottom: 20, | 
		
	
		
			
				|  |  |  |  |                       left: 40, | 
		
	
		
			
				|  |  |  |  |                       right: 40, | 
		
	
		
			
				|  |  |  |  |                     ), | 
		
	
		
			
				|  |  |  |  |                     child: Row( | 
		
	
		
			
				|  |  |  |  |                       mainAxisSize: MainAxisSize.max, | 
		
	
		
			
				|  |  |  |  |                       mainAxisAlignment: MainAxisAlignment.spaceBetween, | 
		
	
		
			
				|  |  |  |  |                       children: <Widget>[ | 
		
	
		
			
				|  |  |  |  |                         // if (provider.isVideoCall) | 
		
	
		
			
				|  |  |  |  |                         RawMaterialButton( | 
		
	
		
			
				|  |  |  |  |                           constraints: const BoxConstraints(), | 
		
	
		
			
				|  |  |  |  |                           onPressed: () { | 
		
	
		
			
				|  |  |  |  |                             provider.loudOn(); | 
		
	
		
			
				|  |  |  |  |                           }, | 
		
	
		
			
				|  |  |  |  |                           elevation: 2.0, | 
		
	
		
			
				|  |  |  |  |                           fillColor: provider.isLoudSpeaker ? MyColors.textMixColor : Colors.grey, | 
		
	
		
			
				|  |  |  |  |                           padding: const EdgeInsets.all( | 
		
	
		
			
				|  |  |  |  |                             10.0, | 
		
	
		
			
				|  |  |  |  |                           ), | 
		
	
		
			
				|  |  |  |  |                           shape: const CircleBorder(), | 
		
	
		
			
				|  |  |  |  |                           child: const Icon( | 
		
	
		
			
				|  |  |  |  |                             Icons.volume_up, | 
		
	
		
			
				|  |  |  |  |                             color: MyColors.white, | 
		
	
		
			
				|  |  |  |  |                             size: 30.0, | 
		
	
		
			
				|  |  |  |  |                           ), | 
		
	
		
			
				|  |  |  |  |                         ), | 
		
	
		
			
				|  |  |  |  |                         RawMaterialButton( | 
		
	
		
			
				|  |  |  |  |                           constraints: const BoxConstraints(), | 
		
	
		
			
				|  |  |  |  |                           onPressed: () { | 
		
	
		
			
				|  |  |  |  |                             provider.camOff(); | 
		
	
		
			
				|  |  |  |  |                           }, | 
		
	
		
			
				|  |  |  |  |                           elevation: 2.0, | 
		
	
		
			
				|  |  |  |  |                           fillColor: provider.isCamOff ? MyColors.textMixColor : Colors.grey, | 
		
	
		
			
				|  |  |  |  |                           padding: const EdgeInsets.all( | 
		
	
		
			
				|  |  |  |  |                             10.0, | 
		
	
		
			
				|  |  |  |  |                           ), | 
		
	
		
			
				|  |  |  |  |                           shape: const CircleBorder(), | 
		
	
		
			
				|  |  |  |  |                           child: Icon( | 
		
	
		
			
				|  |  |  |  |                             provider.isCamOff ? Icons.videocam_off : Icons.videocam, | 
		
	
		
			
				|  |  |  |  |                             color: MyColors.white, | 
		
	
		
			
				|  |  |  |  |                             size: 30.0, | 
		
	
		
			
				|  |  |  |  |                           ), | 
		
	
		
			
				|  |  |  |  |                         ), | 
		
	
		
			
				|  |  |  |  |                         RawMaterialButton( | 
		
	
		
			
				|  |  |  |  |                           constraints: const BoxConstraints(), | 
		
	
		
			
				|  |  |  |  |                           onPressed: () { | 
		
	
		
			
				|  |  |  |  |                             provider.switchCamera(); | 
		
	
		
			
				|  |  |  |  |                           }, | 
		
	
		
			
				|  |  |  |  |                           elevation: 2.0, | 
		
	
		
			
				|  |  |  |  |                           fillColor: provider.isFrontCamera ? Colors.grey : MyColors.textMixColor, | 
		
	
		
			
				|  |  |  |  |                           padding: const EdgeInsets.all( | 
		
	
		
			
				|  |  |  |  |                             10.0, | 
		
	
		
			
				|  |  |  |  |                           ), | 
		
	
		
			
				|  |  |  |  |                           shape: const CircleBorder(), | 
		
	
		
			
				|  |  |  |  |                           child: Icon( | 
		
	
		
			
				|  |  |  |  |                             provider.isFrontCamera ? Icons.switch_camera_outlined : Icons.switch_camera, | 
		
	
		
			
				|  |  |  |  |                             color: MyColors.white, | 
		
	
		
			
				|  |  |  |  |                             size: 30.0, | 
		
	
		
			
				|  |  |  |  |                           ), | 
		
	
		
			
				|  |  |  |  |                         ), | 
		
	
		
			
				|  |  |  |  |                         RawMaterialButton( | 
		
	
		
			
				|  |  |  |  |                           constraints: const BoxConstraints(), | 
		
	
		
			
				|  |  |  |  |                           onPressed: () { | 
		
	
		
			
				|  |  |  |  |                             provider.micOff(); | 
		
	
		
			
				|  |  |  |  |                           }, | 
		
	
		
			
				|  |  |  |  |                           elevation: 2.0, | 
		
	
		
			
				|  |  |  |  |                           fillColor: provider.isMicOff ? MyColors.textMixColor : Colors.grey, | 
		
	
		
			
				|  |  |  |  |                           padding: const EdgeInsets.all( | 
		
	
		
			
				|  |  |  |  |                             10.0, | 
		
	
		
			
				|  |  |  |  |                           ), | 
		
	
		
			
				|  |  |  |  |                           shape: const CircleBorder(), | 
		
	
		
			
				|  |  |  |  |                           child: Icon( | 
		
	
		
			
				|  |  |  |  |                             provider.isMicOff ? Icons.mic_off : Icons.mic, | 
		
	
		
			
				|  |  |  |  |                             color: MyColors.white, | 
		
	
		
			
				|  |  |  |  |                             size: 30.0, | 
		
	
		
			
				|  |  |  |  |                           ), | 
		
	
		
			
				|  |  |  |  |                         ), | 
		
	
		
			
				|  |  |  |  |                         RawMaterialButton( | 
		
	
		
			
				|  |  |  |  |                           constraints: const BoxConstraints(), | 
		
	
		
			
				|  |  |  |  |                           onPressed: () { | 
		
	
		
			
				|  |  |  |  |                             provider.endCall(isUserOnline: cpm.isUserOnline).then((bool value) { | 
		
	
		
			
				|  |  |  |  |                               if (value) { | 
		
	
		
			
				|  |  |  |  |                                 Navigator.of(context).pop(); | 
		
	
		
			
				|  |  |  |  |                                 // print("Reintiiiiiiitttiiiiiiii"); | 
		
	
		
			
				|  |  |  |  |                                 // provider.initStreams(); | 
		
	
		
			
				|  |  |  |  |                               } | 
		
	
		
			
				|  |  |  |  |                             }); | 
		
	
		
			
				|  |  |  |  |                           }, | 
		
	
		
			
				|  |  |  |  |                           elevation: 2.0, | 
		
	
		
			
				|  |  |  |  |                           fillColor: MyColors.redA3Color, | 
		
	
		
			
				|  |  |  |  |                           padding: const EdgeInsets.all( | 
		
	
		
			
				|  |  |  |  |                             10.0, | 
		
	
		
			
				|  |  |  |  |                           ), | 
		
	
		
			
				|  |  |  |  |                           shape: const CircleBorder(), | 
		
	
		
			
				|  |  |  |  |                           child: const Icon( | 
		
	
		
			
				|  |  |  |  |                             Icons.call_end, | 
		
	
		
			
				|  |  |  |  |                             color: MyColors.white, | 
		
	
		
			
				|  |  |  |  |                             size: 30.0, | 
		
	
		
			
				|  |  |  |  |                           ), | 
		
	
		
			
				|  |  |  |  |                         ), | 
		
	
		
			
				|  |  |  |  |                       ], | 
		
	
		
			
				|  |  |  |  |                     ), | 
		
	
		
			
				|  |  |  |  |                   ), | 
		
	
		
			
				|  |  |  |  |                 ), | 
		
	
		
			
				|  |  |  |  |               ], | 
		
	
		
			
				|  |  |  |  |             ), | 
		
	
		
			
				|  |  |  |  |           ) | 
		
	
		
			
				|  |  |  |  |               : provider.isOutGoingCall | 
		
	
		
			
				|  |  |  |  |               ? SizedBox( | 
		
	
		
			
				|  |  |  |  |             width: double.infinity, | 
		
	
		
			
				|  |  |  |  |             height: double.infinity, | 
		
	
		
			
				|  |  |  |  |             child: Stack( | 
		
	
		
			
				|  |  |  |  |               alignment: FractionalOffset.center, | 
		
	
		
			
				|  |  |  |  |               children: <Widget>[ | 
		
	
		
			
				|  |  |  |  |                 if (!provider.isAudioCall && provider.isVideoCall) | 
		
	
		
			
				|  |  |  |  |                   Positioned.fill( | 
		
	
		
			
				|  |  |  |  |                     child: RTCVideoView( | 
		
	
		
			
				|  |  |  |  |                       provider.remoteRenderer!, | 
		
	
		
			
				|  |  |  |  |                       objectFit: RTCVideoViewObjectFit.RTCVideoViewObjectFitCover, | 
		
	
		
			
				|  |  |  |  |                       key: const Key('remote'), | 
		
	
		
			
				|  |  |  |  |                     ), | 
		
	
		
			
				|  |  |  |  |                   ), | 
		
	
		
			
				|  |  |  |  |                 if (provider.isVideoCall) | 
		
	
		
			
				|  |  |  |  |                   DraggableWidget( | 
		
	
		
			
				|  |  |  |  |                     bottomMargin: 20, | 
		
	
		
			
				|  |  |  |  |                     topMargin: 40, | 
		
	
		
			
				|  |  |  |  |                     intialVisibility: true, | 
		
	
		
			
				|  |  |  |  |                     horizontalSpace: 20, | 
		
	
		
			
				|  |  |  |  |                     shadowBorderRadius: 50, | 
		
	
		
			
				|  |  |  |  |                     initialPosition: AnchoringPosition.topLeft, | 
		
	
		
			
				|  |  |  |  |                     dragController: dragController, | 
		
	
		
			
				|  |  |  |  |                     normalShadow: const BoxShadow(spreadRadius: 0.0, blurRadius: 0.0), | 
		
	
		
			
				|  |  |  |  |                     draggingShadow: const BoxShadow(spreadRadius: 0.0, blurRadius: 0.0), | 
		
	
		
			
				|  |  |  |  |                     child: SizedBox( | 
		
	
		
			
				|  |  |  |  |                       height: 200, | 
		
	
		
			
				|  |  |  |  |                       width: 140, | 
		
	
		
			
				|  |  |  |  |                       child: RTCVideoView( | 
		
	
		
			
				|  |  |  |  |                         provider.localVideoRenderer!, | 
		
	
		
			
				|  |  |  |  |                         mirror: true, | 
		
	
		
			
				|  |  |  |  |                         objectFit: RTCVideoViewObjectFit.RTCVideoViewObjectFitCover, | 
		
	
		
			
				|  |  |  |  |                       ), | 
		
	
		
			
				|  |  |  |  |                     ), | 
		
	
		
			
				|  |  |  |  |                   ), | 
		
	
		
			
				|  |  |  |  |                 if (!provider.isVideoCall) | 
		
	
		
			
				|  |  |  |  |                   Positioned.fill( | 
		
	
		
			
				|  |  |  |  |                     child: ClipRect( | 
		
	
		
			
				|  |  |  |  |                       child: BackdropFilter( | 
		
	
		
			
				|  |  |  |  |                         filter: ImageFilter.blur(sigmaX: 5.0, sigmaY: 5.0), | 
		
	
		
			
				|  |  |  |  |                         child: Container( | 
		
	
		
			
				|  |  |  |  |                           decoration: BoxDecoration( | 
		
	
		
			
				|  |  |  |  |                             color: MyColors.grey57Color.withOpacity( | 
		
	
		
			
				|  |  |  |  |                               0.3, | 
		
	
		
			
				|  |  |  |  |                             ), | 
		
	
		
			
				|  |  |  |  |                           ), | 
		
	
		
			
				|  |  |  |  |                           child: Column( | 
		
	
		
			
				|  |  |  |  |                             crossAxisAlignment: CrossAxisAlignment.start, | 
		
	
		
			
				|  |  |  |  |                             mainAxisSize: MainAxisSize.max, | 
		
	
		
			
				|  |  |  |  |                         ], | 
		
	
		
			
				|  |  |  |  |                       ), | 
		
	
		
			
				|  |  |  |  |                     ) | 
		
	
		
			
				|  |  |  |  |                   : provider.isOutGoingCall | 
		
	
		
			
				|  |  |  |  |                       ? SizedBox( | 
		
	
		
			
				|  |  |  |  |                           width: double.infinity, | 
		
	
		
			
				|  |  |  |  |                           height: double.infinity, | 
		
	
		
			
				|  |  |  |  |                           child: Stack( | 
		
	
		
			
				|  |  |  |  |                             alignment: FractionalOffset.center, | 
		
	
		
			
				|  |  |  |  |                             children: <Widget>[ | 
		
	
		
			
				|  |  |  |  |                               40.height, | 
		
	
		
			
				|  |  |  |  |                               Row( | 
		
	
		
			
				|  |  |  |  |                                 crossAxisAlignment: CrossAxisAlignment.center, | 
		
	
		
			
				|  |  |  |  |                                 mainAxisAlignment: MainAxisAlignment.center, | 
		
	
		
			
				|  |  |  |  |                                 children: <Widget>[ | 
		
	
		
			
				|  |  |  |  |                                   Container( | 
		
	
		
			
				|  |  |  |  |                                     margin: const EdgeInsets.all(21.0), | 
		
	
		
			
				|  |  |  |  |                                     child: Container( | 
		
	
		
			
				|  |  |  |  |                                       margin: const EdgeInsets.only( | 
		
	
		
			
				|  |  |  |  |                                         left: 10.0, | 
		
	
		
			
				|  |  |  |  |                                         right: 10.0, | 
		
	
		
			
				|  |  |  |  |                                       ), | 
		
	
		
			
				|  |  |  |  |                                       child: Column( | 
		
	
		
			
				|  |  |  |  |                                         crossAxisAlignment: CrossAxisAlignment.center, | 
		
	
		
			
				|  |  |  |  |                                         mainAxisSize: MainAxisSize.min, | 
		
	
		
			
				|  |  |  |  |                                         mainAxisAlignment: MainAxisAlignment.spaceAround, | 
		
	
		
			
				|  |  |  |  |                                         children: <Widget>[ | 
		
	
		
			
				|  |  |  |  |                                           SvgPicture.asset( | 
		
	
		
			
				|  |  |  |  |                                             "assets/images/user.svg", | 
		
	
		
			
				|  |  |  |  |                                             height: 70, | 
		
	
		
			
				|  |  |  |  |                                             width: 70, | 
		
	
		
			
				|  |  |  |  |                                             fit: BoxFit.cover, | 
		
	
		
			
				|  |  |  |  |                               if (!provider.isAudioCall && provider.isVideoCall) | 
		
	
		
			
				|  |  |  |  |                                 Positioned.fill( | 
		
	
		
			
				|  |  |  |  |                                   child: RTCVideoView( | 
		
	
		
			
				|  |  |  |  |                                     provider.remoteRenderer!, | 
		
	
		
			
				|  |  |  |  |                                     objectFit: RTCVideoViewObjectFit.RTCVideoViewObjectFitCover, | 
		
	
		
			
				|  |  |  |  |                                     key: const Key('remote'), | 
		
	
		
			
				|  |  |  |  |                                   ), | 
		
	
		
			
				|  |  |  |  |                                 ), | 
		
	
		
			
				|  |  |  |  |                               if (provider.isVideoCall) | 
		
	
		
			
				|  |  |  |  |                                 DraggableWidget( | 
		
	
		
			
				|  |  |  |  |                                   bottomMargin: 20, | 
		
	
		
			
				|  |  |  |  |                                   topMargin: 40, | 
		
	
		
			
				|  |  |  |  |                                   intialVisibility: true, | 
		
	
		
			
				|  |  |  |  |                                   horizontalSpace: 20, | 
		
	
		
			
				|  |  |  |  |                                   shadowBorderRadius: 50, | 
		
	
		
			
				|  |  |  |  |                                   initialPosition: AnchoringPosition.topLeft, | 
		
	
		
			
				|  |  |  |  |                                   dragController: dragController, | 
		
	
		
			
				|  |  |  |  |                                   normalShadow: const BoxShadow(spreadRadius: 0.0, blurRadius: 0.0), | 
		
	
		
			
				|  |  |  |  |                                   draggingShadow: const BoxShadow(spreadRadius: 0.0, blurRadius: 0.0), | 
		
	
		
			
				|  |  |  |  |                                   child: SizedBox( | 
		
	
		
			
				|  |  |  |  |                                     height: 200, | 
		
	
		
			
				|  |  |  |  |                                     width: 140, | 
		
	
		
			
				|  |  |  |  |                                     child: RTCVideoView( | 
		
	
		
			
				|  |  |  |  |                                       provider.localVideoRenderer!, | 
		
	
		
			
				|  |  |  |  |                                       mirror: true, | 
		
	
		
			
				|  |  |  |  |                                       objectFit: RTCVideoViewObjectFit.RTCVideoViewObjectFitCover, | 
		
	
		
			
				|  |  |  |  |                                     ), | 
		
	
		
			
				|  |  |  |  |                                   ), | 
		
	
		
			
				|  |  |  |  |                                 ), | 
		
	
		
			
				|  |  |  |  |                               if (!provider.isVideoCall) | 
		
	
		
			
				|  |  |  |  |                                 Positioned.fill( | 
		
	
		
			
				|  |  |  |  |                                   child: ClipRect( | 
		
	
		
			
				|  |  |  |  |                                     child: BackdropFilter( | 
		
	
		
			
				|  |  |  |  |                                       filter: ImageFilter.blur(sigmaX: 5.0, sigmaY: 5.0), | 
		
	
		
			
				|  |  |  |  |                                       child: Container( | 
		
	
		
			
				|  |  |  |  |                                         decoration: BoxDecoration( | 
		
	
		
			
				|  |  |  |  |                                           color: MyColors.grey57Color.withOpacity( | 
		
	
		
			
				|  |  |  |  |                                             0.3, | 
		
	
		
			
				|  |  |  |  |                                           ), | 
		
	
		
			
				|  |  |  |  |                                           10.height, | 
		
	
		
			
				|  |  |  |  |                                           Text( | 
		
	
		
			
				|  |  |  |  |                                             provider.outGoingCallData.receiverName!, | 
		
	
		
			
				|  |  |  |  |                                             style: const TextStyle( | 
		
	
		
			
				|  |  |  |  |                                               fontSize: 21, | 
		
	
		
			
				|  |  |  |  |                                               decoration: TextDecoration.none, | 
		
	
		
			
				|  |  |  |  |                                               fontWeight: FontWeight.bold, | 
		
	
		
			
				|  |  |  |  |                                               color: MyColors.white, | 
		
	
		
			
				|  |  |  |  |                                               letterSpacing: -1.26, | 
		
	
		
			
				|  |  |  |  |                                               height: 23 / 12, | 
		
	
		
			
				|  |  |  |  |                                         ), | 
		
	
		
			
				|  |  |  |  |                                         child: Column( | 
		
	
		
			
				|  |  |  |  |                                           crossAxisAlignment: CrossAxisAlignment.start, | 
		
	
		
			
				|  |  |  |  |                                           mainAxisSize: MainAxisSize.max, | 
		
	
		
			
				|  |  |  |  |                                           children: <Widget>[ | 
		
	
		
			
				|  |  |  |  |                                             40.height, | 
		
	
		
			
				|  |  |  |  |                                             Row( | 
		
	
		
			
				|  |  |  |  |                                               crossAxisAlignment: CrossAxisAlignment.center, | 
		
	
		
			
				|  |  |  |  |                                               mainAxisAlignment: MainAxisAlignment.center, | 
		
	
		
			
				|  |  |  |  |                                               children: <Widget>[ | 
		
	
		
			
				|  |  |  |  |                                                 Container( | 
		
	
		
			
				|  |  |  |  |                                                   margin: const EdgeInsets.all(21.0), | 
		
	
		
			
				|  |  |  |  |                                                   child: Container( | 
		
	
		
			
				|  |  |  |  |                                                     margin: const EdgeInsets.only( | 
		
	
		
			
				|  |  |  |  |                                                       left: 10.0, | 
		
	
		
			
				|  |  |  |  |                                                       right: 10.0, | 
		
	
		
			
				|  |  |  |  |                                                     ), | 
		
	
		
			
				|  |  |  |  |                                                     child: Column( | 
		
	
		
			
				|  |  |  |  |                                                       crossAxisAlignment: CrossAxisAlignment.center, | 
		
	
		
			
				|  |  |  |  |                                                       mainAxisSize: MainAxisSize.min, | 
		
	
		
			
				|  |  |  |  |                                                       mainAxisAlignment: MainAxisAlignment.spaceAround, | 
		
	
		
			
				|  |  |  |  |                                                       children: <Widget>[ | 
		
	
		
			
				|  |  |  |  |                                                         SvgPicture.asset( | 
		
	
		
			
				|  |  |  |  |                                                           "assets/images/user.svg", | 
		
	
		
			
				|  |  |  |  |                                                           height: 70, | 
		
	
		
			
				|  |  |  |  |                                                           width: 70, | 
		
	
		
			
				|  |  |  |  |                                                           fit: BoxFit.cover, | 
		
	
		
			
				|  |  |  |  |                                                         ), | 
		
	
		
			
				|  |  |  |  |                                                         10.height, | 
		
	
		
			
				|  |  |  |  |                                                         Text( | 
		
	
		
			
				|  |  |  |  |                                                           provider.outGoingCallData.receiverName!, | 
		
	
		
			
				|  |  |  |  |                                                           style: const TextStyle( | 
		
	
		
			
				|  |  |  |  |                                                             fontSize: 21, | 
		
	
		
			
				|  |  |  |  |                                                             decoration: TextDecoration.none, | 
		
	
		
			
				|  |  |  |  |                                                             fontWeight: FontWeight.bold, | 
		
	
		
			
				|  |  |  |  |                                                             color: MyColors.white, | 
		
	
		
			
				|  |  |  |  |                                                             letterSpacing: -1.26, | 
		
	
		
			
				|  |  |  |  |                                                             height: 23 / 12, | 
		
	
		
			
				|  |  |  |  |                                                           ), | 
		
	
		
			
				|  |  |  |  |                                                         ), | 
		
	
		
			
				|  |  |  |  |                                                         const Text( | 
		
	
		
			
				|  |  |  |  |                                                           "On Call", | 
		
	
		
			
				|  |  |  |  |                                                           style: TextStyle( | 
		
	
		
			
				|  |  |  |  |                                                             fontSize: 16, | 
		
	
		
			
				|  |  |  |  |                                                             decoration: TextDecoration.none, | 
		
	
		
			
				|  |  |  |  |                                                             fontWeight: FontWeight.w600, | 
		
	
		
			
				|  |  |  |  |                                                             color: Color( | 
		
	
		
			
				|  |  |  |  |                                                               0xffC6C6C6, | 
		
	
		
			
				|  |  |  |  |                                                             ), | 
		
	
		
			
				|  |  |  |  |                                                             letterSpacing: -0.48, | 
		
	
		
			
				|  |  |  |  |                                                             height: 23 / 24, | 
		
	
		
			
				|  |  |  |  |                                                           ), | 
		
	
		
			
				|  |  |  |  |                                                         ), | 
		
	
		
			
				|  |  |  |  |                                                         const SizedBox( | 
		
	
		
			
				|  |  |  |  |                                                           height: 2, | 
		
	
		
			
				|  |  |  |  |                                                         ), | 
		
	
		
			
				|  |  |  |  |                                                       ], | 
		
	
		
			
				|  |  |  |  |                                                     ), | 
		
	
		
			
				|  |  |  |  |                                                   ), | 
		
	
		
			
				|  |  |  |  |                                                 ), | 
		
	
		
			
				|  |  |  |  |                                               ], | 
		
	
		
			
				|  |  |  |  |                                             ), | 
		
	
		
			
				|  |  |  |  |                                           ), | 
		
	
		
			
				|  |  |  |  |                                           const Text( | 
		
	
		
			
				|  |  |  |  |                                             "On Call", | 
		
	
		
			
				|  |  |  |  |                                             style: TextStyle( | 
		
	
		
			
				|  |  |  |  |                                               fontSize: 16, | 
		
	
		
			
				|  |  |  |  |                                               decoration: TextDecoration.none, | 
		
	
		
			
				|  |  |  |  |                                               fontWeight: FontWeight.w600, | 
		
	
		
			
				|  |  |  |  |                                               color: Color( | 
		
	
		
			
				|  |  |  |  |                                                 0xffC6C6C6, | 
		
	
		
			
				|  |  |  |  |                                               ), | 
		
	
		
			
				|  |  |  |  |                                               letterSpacing: -0.48, | 
		
	
		
			
				|  |  |  |  |                                               height: 23 / 24, | 
		
	
		
			
				|  |  |  |  |                                             ), | 
		
	
		
			
				|  |  |  |  |                                           ), | 
		
	
		
			
				|  |  |  |  |                                           const SizedBox( | 
		
	
		
			
				|  |  |  |  |                                             height: 2, | 
		
	
		
			
				|  |  |  |  |                                           ), | 
		
	
		
			
				|  |  |  |  |                                         ], | 
		
	
		
			
				|  |  |  |  |                                           ], | 
		
	
		
			
				|  |  |  |  |                                         ), | 
		
	
		
			
				|  |  |  |  |                                       ), | 
		
	
		
			
				|  |  |  |  |                                     ), | 
		
	
		
			
				|  |  |  |  |                                   ), | 
		
	
		
			
				|  |  |  |  |                                 ], | 
		
	
		
			
				|  |  |  |  |                                 ), | 
		
	
		
			
				|  |  |  |  |                               Align( | 
		
	
		
			
				|  |  |  |  |                                 alignment: Alignment.bottomCenter, | 
		
	
		
			
				|  |  |  |  |                                 child: Container( | 
		
	
		
			
				|  |  |  |  |                                   padding: const EdgeInsets.only( | 
		
	
		
			
				|  |  |  |  |                                     bottom: 20, | 
		
	
		
			
				|  |  |  |  |                                     left: 40, | 
		
	
		
			
				|  |  |  |  |                                     right: 40, | 
		
	
		
			
				|  |  |  |  |                                   ), | 
		
	
		
			
				|  |  |  |  |                                   child: Row( | 
		
	
		
			
				|  |  |  |  |                                     mainAxisSize: MainAxisSize.max, | 
		
	
		
			
				|  |  |  |  |                                     mainAxisAlignment: MainAxisAlignment.spaceBetween, | 
		
	
		
			
				|  |  |  |  |                                     children: <Widget>[ | 
		
	
		
			
				|  |  |  |  |                                       // if (provider.isVideoCall) | 
		
	
		
			
				|  |  |  |  |                                       RawMaterialButton( | 
		
	
		
			
				|  |  |  |  |                                         constraints: const BoxConstraints(), | 
		
	
		
			
				|  |  |  |  |                                         onPressed: () { | 
		
	
		
			
				|  |  |  |  |                                           provider.loudOn(); | 
		
	
		
			
				|  |  |  |  |                                         }, | 
		
	
		
			
				|  |  |  |  |                                         elevation: 2.0, | 
		
	
		
			
				|  |  |  |  |                                         fillColor: provider.isLoudSpeaker ? MyColors.textMixColor : Colors.grey, | 
		
	
		
			
				|  |  |  |  |                                         padding: const EdgeInsets.all( | 
		
	
		
			
				|  |  |  |  |                                           10.0, | 
		
	
		
			
				|  |  |  |  |                                         ), | 
		
	
		
			
				|  |  |  |  |                                         shape: const CircleBorder(), | 
		
	
		
			
				|  |  |  |  |                                         child: const Icon( | 
		
	
		
			
				|  |  |  |  |                                           Icons.volume_up, | 
		
	
		
			
				|  |  |  |  |                                           color: MyColors.white, | 
		
	
		
			
				|  |  |  |  |                                           size: 30.0, | 
		
	
		
			
				|  |  |  |  |                                         ), | 
		
	
		
			
				|  |  |  |  |                                       ), | 
		
	
		
			
				|  |  |  |  |                                       RawMaterialButton( | 
		
	
		
			
				|  |  |  |  |                                         constraints: const BoxConstraints(), | 
		
	
		
			
				|  |  |  |  |                                         onPressed: () { | 
		
	
		
			
				|  |  |  |  |                                           provider.camOff(); | 
		
	
		
			
				|  |  |  |  |                                         }, | 
		
	
		
			
				|  |  |  |  |                                         elevation: 2.0, | 
		
	
		
			
				|  |  |  |  |                                         fillColor: provider.isCamOff ? MyColors.textMixColor : Colors.grey, | 
		
	
		
			
				|  |  |  |  |                                         padding: const EdgeInsets.all( | 
		
	
		
			
				|  |  |  |  |                                           10.0, | 
		
	
		
			
				|  |  |  |  |                                         ), | 
		
	
		
			
				|  |  |  |  |                                         shape: const CircleBorder(), | 
		
	
		
			
				|  |  |  |  |                                         child: Icon( | 
		
	
		
			
				|  |  |  |  |                                           provider.isCamOff ? Icons.videocam_off : Icons.videocam, | 
		
	
		
			
				|  |  |  |  |                                           color: MyColors.white, | 
		
	
		
			
				|  |  |  |  |                                           size: 30.0, | 
		
	
		
			
				|  |  |  |  |                                         ), | 
		
	
		
			
				|  |  |  |  |                                       ), | 
		
	
		
			
				|  |  |  |  |                                       RawMaterialButton( | 
		
	
		
			
				|  |  |  |  |                                         constraints: const BoxConstraints(), | 
		
	
		
			
				|  |  |  |  |                                         onPressed: () { | 
		
	
		
			
				|  |  |  |  |                                           provider.switchCamera(); | 
		
	
		
			
				|  |  |  |  |                                         }, | 
		
	
		
			
				|  |  |  |  |                                         elevation: 2.0, | 
		
	
		
			
				|  |  |  |  |                                         fillColor: provider.isFrontCamera ? Colors.grey : MyColors.textMixColor, | 
		
	
		
			
				|  |  |  |  |                                         padding: const EdgeInsets.all( | 
		
	
		
			
				|  |  |  |  |                                           10.0, | 
		
	
		
			
				|  |  |  |  |                                         ), | 
		
	
		
			
				|  |  |  |  |                                         shape: const CircleBorder(), | 
		
	
		
			
				|  |  |  |  |                                         child: Icon( | 
		
	
		
			
				|  |  |  |  |                                           provider.isFrontCamera ? Icons.switch_camera_outlined : Icons.switch_camera, | 
		
	
		
			
				|  |  |  |  |                                           color: MyColors.white, | 
		
	
		
			
				|  |  |  |  |                                           size: 30.0, | 
		
	
		
			
				|  |  |  |  |                                         ), | 
		
	
		
			
				|  |  |  |  |                                       ), | 
		
	
		
			
				|  |  |  |  |                                       RawMaterialButton( | 
		
	
		
			
				|  |  |  |  |                                         constraints: const BoxConstraints(), | 
		
	
		
			
				|  |  |  |  |                                         onPressed: () { | 
		
	
		
			
				|  |  |  |  |                                           provider.micOff(); | 
		
	
		
			
				|  |  |  |  |                                         }, | 
		
	
		
			
				|  |  |  |  |                                         elevation: 2.0, | 
		
	
		
			
				|  |  |  |  |                                         fillColor: provider.isMicOff ? MyColors.textMixColor : Colors.grey, | 
		
	
		
			
				|  |  |  |  |                                         padding: const EdgeInsets.all( | 
		
	
		
			
				|  |  |  |  |                                           10.0, | 
		
	
		
			
				|  |  |  |  |                                         ), | 
		
	
		
			
				|  |  |  |  |                                         shape: const CircleBorder(), | 
		
	
		
			
				|  |  |  |  |                                         child: Icon( | 
		
	
		
			
				|  |  |  |  |                                           provider.isMicOff ? Icons.mic_off : Icons.mic, | 
		
	
		
			
				|  |  |  |  |                                           color: MyColors.white, | 
		
	
		
			
				|  |  |  |  |                                           size: 30.0, | 
		
	
		
			
				|  |  |  |  |                                         ), | 
		
	
		
			
				|  |  |  |  |                                       ), | 
		
	
		
			
				|  |  |  |  |                                       RawMaterialButton( | 
		
	
		
			
				|  |  |  |  |                                         constraints: const BoxConstraints(), | 
		
	
		
			
				|  |  |  |  |                                         onPressed: () { | 
		
	
		
			
				|  |  |  |  |                                           provider.endCall(isUserOnline: cpm.isUserOnline).then((bool value) { | 
		
	
		
			
				|  |  |  |  |                                             if (value) { | 
		
	
		
			
				|  |  |  |  |                                               Navigator.of(context).pop(); | 
		
	
		
			
				|  |  |  |  |                                             } | 
		
	
		
			
				|  |  |  |  |                                           }); | 
		
	
		
			
				|  |  |  |  |                                         }, | 
		
	
		
			
				|  |  |  |  |                                         elevation: 2.0, | 
		
	
		
			
				|  |  |  |  |                                         fillColor: MyColors.redA3Color, | 
		
	
		
			
				|  |  |  |  |                                         padding: const EdgeInsets.all( | 
		
	
		
			
				|  |  |  |  |                                           10.0, | 
		
	
		
			
				|  |  |  |  |                                         ), | 
		
	
		
			
				|  |  |  |  |                                         shape: const CircleBorder(), | 
		
	
		
			
				|  |  |  |  |                                         child: const Icon( | 
		
	
		
			
				|  |  |  |  |                                           Icons.call_end, | 
		
	
		
			
				|  |  |  |  |                                           color: MyColors.white, | 
		
	
		
			
				|  |  |  |  |                                           size: 30.0, | 
		
	
		
			
				|  |  |  |  |                                         ), | 
		
	
		
			
				|  |  |  |  |                                       ), | 
		
	
		
			
				|  |  |  |  |                                     ], | 
		
	
		
			
				|  |  |  |  |                                   ), | 
		
	
		
			
				|  |  |  |  |                                 ), | 
		
	
		
			
				|  |  |  |  |                               ), | 
		
	
		
			
				|  |  |  |  |                             ], | 
		
	
		
			
				|  |  |  |  |                           ), | 
		
	
		
			
				|  |  |  |  |                         ), | 
		
	
		
			
				|  |  |  |  |                       ), | 
		
	
		
			
				|  |  |  |  |                     ), | 
		
	
		
			
				|  |  |  |  |                   ), | 
		
	
		
			
				|  |  |  |  |                 Align( | 
		
	
		
			
				|  |  |  |  |                   alignment: Alignment.bottomCenter, | 
		
	
		
			
				|  |  |  |  |                   child: Container( | 
		
	
		
			
				|  |  |  |  |                     padding: const EdgeInsets.only( | 
		
	
		
			
				|  |  |  |  |                       bottom: 20, | 
		
	
		
			
				|  |  |  |  |                       left: 40, | 
		
	
		
			
				|  |  |  |  |                       right: 40, | 
		
	
		
			
				|  |  |  |  |                     ), | 
		
	
		
			
				|  |  |  |  |                     child: Row( | 
		
	
		
			
				|  |  |  |  |                       mainAxisSize: MainAxisSize.max, | 
		
	
		
			
				|  |  |  |  |                       mainAxisAlignment: MainAxisAlignment.spaceBetween, | 
		
	
		
			
				|  |  |  |  |                       children: <Widget>[ | 
		
	
		
			
				|  |  |  |  |                         // if (provider.isVideoCall) | 
		
	
		
			
				|  |  |  |  |                         RawMaterialButton( | 
		
	
		
			
				|  |  |  |  |                           constraints: const BoxConstraints(), | 
		
	
		
			
				|  |  |  |  |                           onPressed: () { | 
		
	
		
			
				|  |  |  |  |                             provider.loudOn(); | 
		
	
		
			
				|  |  |  |  |                           }, | 
		
	
		
			
				|  |  |  |  |                           elevation: 2.0, | 
		
	
		
			
				|  |  |  |  |                           fillColor: provider.isLoudSpeaker ? MyColors.textMixColor : Colors.grey, | 
		
	
		
			
				|  |  |  |  |                           padding: const EdgeInsets.all( | 
		
	
		
			
				|  |  |  |  |                             10.0, | 
		
	
		
			
				|  |  |  |  |                           ), | 
		
	
		
			
				|  |  |  |  |                           shape: const CircleBorder(), | 
		
	
		
			
				|  |  |  |  |                           child: const Icon( | 
		
	
		
			
				|  |  |  |  |                             Icons.volume_up, | 
		
	
		
			
				|  |  |  |  |                             color: MyColors.white, | 
		
	
		
			
				|  |  |  |  |                             size: 30.0, | 
		
	
		
			
				|  |  |  |  |                           ), | 
		
	
		
			
				|  |  |  |  |                         ), | 
		
	
		
			
				|  |  |  |  |                         RawMaterialButton( | 
		
	
		
			
				|  |  |  |  |                           constraints: const BoxConstraints(), | 
		
	
		
			
				|  |  |  |  |                           onPressed: () { | 
		
	
		
			
				|  |  |  |  |                             provider.camOff(); | 
		
	
		
			
				|  |  |  |  |                           }, | 
		
	
		
			
				|  |  |  |  |                           elevation: 2.0, | 
		
	
		
			
				|  |  |  |  |                           fillColor: provider.isCamOff ? MyColors.textMixColor : Colors.grey, | 
		
	
		
			
				|  |  |  |  |                           padding: const EdgeInsets.all( | 
		
	
		
			
				|  |  |  |  |                             10.0, | 
		
	
		
			
				|  |  |  |  |                           ), | 
		
	
		
			
				|  |  |  |  |                           shape: const CircleBorder(), | 
		
	
		
			
				|  |  |  |  |                           child: Icon( | 
		
	
		
			
				|  |  |  |  |                             provider.isCamOff ? Icons.videocam_off : Icons.videocam, | 
		
	
		
			
				|  |  |  |  |                             color: MyColors.white, | 
		
	
		
			
				|  |  |  |  |                             size: 30.0, | 
		
	
		
			
				|  |  |  |  |                           ), | 
		
	
		
			
				|  |  |  |  |                         ), | 
		
	
		
			
				|  |  |  |  |                         RawMaterialButton( | 
		
	
		
			
				|  |  |  |  |                           constraints: const BoxConstraints(), | 
		
	
		
			
				|  |  |  |  |                           onPressed: () { | 
		
	
		
			
				|  |  |  |  |                             provider.switchCamera(); | 
		
	
		
			
				|  |  |  |  |                           }, | 
		
	
		
			
				|  |  |  |  |                           elevation: 2.0, | 
		
	
		
			
				|  |  |  |  |                           fillColor: provider.isFrontCamera ? Colors.grey : MyColors.textMixColor, | 
		
	
		
			
				|  |  |  |  |                           padding: const EdgeInsets.all( | 
		
	
		
			
				|  |  |  |  |                             10.0, | 
		
	
		
			
				|  |  |  |  |                           ), | 
		
	
		
			
				|  |  |  |  |                           shape: const CircleBorder(), | 
		
	
		
			
				|  |  |  |  |                           child: Icon( | 
		
	
		
			
				|  |  |  |  |                             provider.isFrontCamera ? Icons.switch_camera_outlined : Icons.switch_camera, | 
		
	
		
			
				|  |  |  |  |                             color: MyColors.white, | 
		
	
		
			
				|  |  |  |  |                             size: 30.0, | 
		
	
		
			
				|  |  |  |  |                           ), | 
		
	
		
			
				|  |  |  |  |                         ), | 
		
	
		
			
				|  |  |  |  |                         RawMaterialButton( | 
		
	
		
			
				|  |  |  |  |                           constraints: const BoxConstraints(), | 
		
	
		
			
				|  |  |  |  |                           onPressed: () { | 
		
	
		
			
				|  |  |  |  |                             provider.micOff(); | 
		
	
		
			
				|  |  |  |  |                           }, | 
		
	
		
			
				|  |  |  |  |                           elevation: 2.0, | 
		
	
		
			
				|  |  |  |  |                           fillColor: provider.isMicOff ? MyColors.textMixColor : Colors.grey, | 
		
	
		
			
				|  |  |  |  |                           padding: const EdgeInsets.all( | 
		
	
		
			
				|  |  |  |  |                             10.0, | 
		
	
		
			
				|  |  |  |  |                           ), | 
		
	
		
			
				|  |  |  |  |                           shape: const CircleBorder(), | 
		
	
		
			
				|  |  |  |  |                           child: Icon( | 
		
	
		
			
				|  |  |  |  |                             provider.isMicOff ? Icons.mic_off : Icons.mic, | 
		
	
		
			
				|  |  |  |  |                             color: MyColors.white, | 
		
	
		
			
				|  |  |  |  |                             size: 30.0, | 
		
	
		
			
				|  |  |  |  |                           ), | 
		
	
		
			
				|  |  |  |  |                         ), | 
		
	
		
			
				|  |  |  |  |                         RawMaterialButton( | 
		
	
		
			
				|  |  |  |  |                           constraints: const BoxConstraints(), | 
		
	
		
			
				|  |  |  |  |                           onPressed: () { | 
		
	
		
			
				|  |  |  |  |                             provider.endCall(isUserOnline: cpm.isUserOnline).then((bool value) { | 
		
	
		
			
				|  |  |  |  |                               if (value) { | 
		
	
		
			
				|  |  |  |  |                                 Navigator.of(context).pop(); | 
		
	
		
			
				|  |  |  |  |                               } | 
		
	
		
			
				|  |  |  |  |                             }); | 
		
	
		
			
				|  |  |  |  |                           }, | 
		
	
		
			
				|  |  |  |  |                           elevation: 2.0, | 
		
	
		
			
				|  |  |  |  |                           fillColor: MyColors.redA3Color, | 
		
	
		
			
				|  |  |  |  |                           padding: const EdgeInsets.all( | 
		
	
		
			
				|  |  |  |  |                             10.0, | 
		
	
		
			
				|  |  |  |  |                           ), | 
		
	
		
			
				|  |  |  |  |                           shape: const CircleBorder(), | 
		
	
		
			
				|  |  |  |  |                           child: const Icon( | 
		
	
		
			
				|  |  |  |  |                             Icons.call_end, | 
		
	
		
			
				|  |  |  |  |                             color: MyColors.white, | 
		
	
		
			
				|  |  |  |  |                             size: 30.0, | 
		
	
		
			
				|  |  |  |  |                           ), | 
		
	
		
			
				|  |  |  |  |                         ), | 
		
	
		
			
				|  |  |  |  |                       ], | 
		
	
		
			
				|  |  |  |  |                     ), | 
		
	
		
			
				|  |  |  |  |                   ), | 
		
	
		
			
				|  |  |  |  |                 ), | 
		
	
		
			
				|  |  |  |  |               ], | 
		
	
		
			
				|  |  |  |  |             ), | 
		
	
		
			
				|  |  |  |  |           ) | 
		
	
		
			
				|  |  |  |  |               : const SizedBox(); | 
		
	
		
			
				|  |  |  |  |                         ) | 
		
	
		
			
				|  |  |  |  |                       : const SizedBox(); | 
		
	
		
			
				|  |  |  |  |         }, | 
		
	
		
			
				|  |  |  |  |       ), | 
		
	
		
			
				|  |  |  |  |     ); | 
		
	
	
		
			
				
					|  |  |  | 
 |