You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
doctor_app_flutter/lib/screens/video_call/video_call.dart

209 lines
5.9 KiB
Dart

import 'dart:async';
import 'package:flutter/material.dart';
class VideoCallPage extends StatefulWidget {
@override
_VideoCallPageState createState() => _VideoCallPageState();
}
class _VideoCallPageState extends State<VideoCallPage> {
Timer _timmerInstance;
int _start = 0;
String _timmer = '';
void startTimmer() {
var oneSec = Duration(seconds: 1);
_timmerInstance = Timer.periodic(
oneSec,
(Timer timer) => setState(() {
if (_start < 0) {
_timmerInstance.cancel();
} else {
_start = _start + 1;
_timmer = getTimerTime(_start);
}
}));
}
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;
}
@override
void initState() {
super.initState();
startTimmer();
}
@override
void dispose() {
_timmerInstance.cancel();
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: <Widget>[
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(
'A B Shaikh',
style: TextStyle(
color: Colors.deepPurpleAccent,
fontWeight: FontWeight.w900,
fontSize: 20),
),
SizedBox(
height: MediaQuery.of(context).size.height * 0.02,
),
Text(
_timmer,
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: <Widget>[
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: () {},
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<FunctionalButton> {
@override
Widget build(BuildContext context) {
return Column(
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisSize: MainAxisSize.min,
children: <Widget>[
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),
),
)
],
);
}
}