import 'dart:async'; import 'package:doctor_app_flutter/providers/livecare_provider.dart'; import 'package:doctor_app_flutter/util/dr_app_shared_pref.dart'; import 'package:flutter/material.dart'; import 'package:doctor_app_flutter/config/shared_pref_kay.dart'; import 'package:provider/provider.dart'; import 'package:doctor_app_flutter/util/dr_app_toast_msg.dart'; import 'package:doctor_app_flutter/util/helpers.dart'; class VideoCallPage extends StatefulWidget { @override _VideoCallPageState createState() => _VideoCallPageState(); } DrAppSharedPreferances sharedPref = DrAppSharedPreferances(); class _VideoCallPageState extends State { Timer _timmerInstance; int _start = 0; String _timmer = ''; LiveCareProvider _liveCareProvider; bool _isInit = true; var patientData = {}; //bool _isOutOfStuck = false; Helpers helpers = new Helpers(); @override void didChangeDependencies() { super.didChangeDependencies(); if (_isInit) { _liveCareProvider = Provider.of(context); startCall(); } _isInit = false; } void connectOpenTok(tokenData) { /* opentok functionalites need to be written */ print(tokenData["OpenSessionID"]); print(tokenData["OpenTokenID"]); } String getTimerTime(int start) { int minutes = (start ~/ 60); String sMinute = ''; if (minutes.toString().length == 1) { sMinute = '0' + minutes.toString(); } else sMinute = minutes.toString(); int seconds = (start % 60); String sSeconds = ''; if (seconds.toString().length == 1) { sSeconds = '0' + seconds.toString(); } else sSeconds = seconds.toString(); return sMinute + ':' + sSeconds; } startCall() async { patientData = await sharedPref.getObj(LIVE_CARE_PATIENT); _liveCareProvider.startCall(patientData, false).then((result) { connectOpenTok(result); }).catchError((error) => {helpers.showErrorToast(error), Navigator.of(context).pop()}); } // @override // void initState() { // super.initState(); // } @override void dispose() { super.dispose(); } @override Widget build(BuildContext context) { return Scaffold( body: SafeArea( child: Container( height: MediaQuery.of(context).size.height * 1.09, // width: MediaQuery.of(context).size.width, decoration: BoxDecoration( color: Colors.white, ), padding: EdgeInsets.all(50.0), child: Column( mainAxisAlignment: MainAxisAlignment.start, mainAxisSize: MainAxisSize.max, crossAxisAlignment: CrossAxisAlignment.center, children: [ SizedBox( height: 10.0, ), Text( 'Calling', style: TextStyle( color: Colors.deepPurpleAccent, fontWeight: FontWeight.w300, fontSize: 15), ), SizedBox( height: MediaQuery.of(context).size.height * 0.02, ), Text( patientData["PatientName"], style: TextStyle( color: Colors.deepPurpleAccent, fontWeight: FontWeight.w900, fontSize: 20), ), SizedBox( height: MediaQuery.of(context).size.height * 0.02, ), Container( child: Text( _timmer == '' ? 'Connecting' : 'Connected', style: TextStyle( color: Colors.deepPurpleAccent, fontWeight: FontWeight.w300, fontSize: 15), )), SizedBox( height: MediaQuery.of(context).size.height * 0.02, ), ClipRRect( borderRadius: BorderRadius.circular(200.0), child: Image.network( 'https://hmgwebservices.com/Images/MobileImages/DUBAI/unkown_female.png', height: 200.0, width: 200.0, ), ), SizedBox( height: MediaQuery.of(context).size.height * 0.02, ), Row( mainAxisSize: MainAxisSize.max, mainAxisAlignment: MainAxisAlignment.spaceBetween, crossAxisAlignment: CrossAxisAlignment.center, children: [ FunctionalButton( title: 'Speaker', icon: Icons.phone_in_talk, onPressed: () {}, ), FunctionalButton( title: 'Flip', icon: Icons.flip_to_back, onPressed: () {}, ), FunctionalButton( title: 'Mute', icon: Icons.mic_off, onPressed: () {}, ), ], ), SizedBox( height: MediaQuery.of(context).size.height * 0.1, ), FloatingActionButton( onPressed: () { Navigator.of(context).pop(); }, elevation: 20.0, shape: CircleBorder(side: BorderSide(color: Colors.red)), mini: false, child: Icon( Icons.call_end, color: Colors.red, ), backgroundColor: Colors.red[100], ) ], ), ), ), ); } } class FunctionalButton extends StatefulWidget { final title; final icon; final Function() onPressed; const FunctionalButton({Key key, this.title, this.icon, this.onPressed}) : super(key: key); @override _FunctionalButtonState createState() => _FunctionalButtonState(); } class _FunctionalButtonState extends State { @override Widget build(BuildContext context) { return Column( mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.center, mainAxisSize: MainAxisSize.min, children: [ RawMaterialButton( onPressed: widget.onPressed, splashColor: Colors.deepPurpleAccent, fillColor: Colors.white, elevation: 10.0, shape: CircleBorder(), child: Padding( padding: const EdgeInsets.all(15.0), child: Icon( widget.icon, size: 30.0, color: Colors.deepPurpleAccent, ), ), ), Container( margin: EdgeInsets.symmetric(vertical: 10.0, horizontal: 2.0), child: Text( widget.title, style: TextStyle(fontSize: 15.0, color: Colors.deepPurpleAccent), ), ) ], ); } }