Commit d954b699 authored by Piyumi Dayarathna's avatar Piyumi Dayarathna 💬

Merge branch 'dev_release' of...

Merge branch 'dev_release' of http://gitlab.sliit.lk/2021-035/2021-035-covidefender into dev_release
parents ac99a794 a6168589
import 'package:covidefender/pages/heart_rate/heart_rate_screen.dart';
import 'package:covidefender/pages/mask_detect/invoker.dart';
import 'package:covidefender/pages/self_carer/sc_main_screen.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
class I_guider extends StatelessWidget {
@override
Widget build(BuildContext context) {
final mesure = MediaQuery.of(context);
return Scaffold(
backgroundColor: Colors.grey[200],
backgroundColor: Colors.white,
appBar: AppBar(
centerTitle: true,
title: Text('I-Guider'),
// elevation: 0,
),
body: Column(
children: [
Row(
children: [
Expanded(
child: Container(
decoration: BoxDecoration(
image: DecorationImage(
image: AssetImage('lib/assets/images/hero.gif'),
fit: BoxFit.cover)),
height: 300,
body: SingleChildScrollView(
child: Column(
children: [
Row(
children: [
Expanded(
child: Container(
height: mesure.size.height/3,
decoration: BoxDecoration(
image: DecorationImage(
image: AssetImage('lib/assets/images/hero.gif'),
fit: BoxFit.cover)),
),
),
),
],
),
//------------------------------------
],
),
//------------------------------------
SizedBox(
height: 50,
),
SizedBox(
height: 50,
),
Row(
children: [
Expanded(
child: Padding(
padding: const EdgeInsets.fromLTRB(8, 0, 8, 0),
child: ButtonTheme(
minWidth: 100.0,
height: 150.0,
child: RaisedButton.icon(
icon: Icon(
Icons.bluetooth_audio_rounded,
size: 40,
color: Colors.white,
Row(
children: [
Expanded(
child: Padding(
padding: const EdgeInsets.fromLTRB(8, 0, 8, 0),
child: ButtonTheme(
splashColor: Colors.blue,
minWidth: 100.0,
height: 150.0,
child: RaisedButton.icon(
icon: Column(
children: [
Icon(
Icons.bluetooth_audio_rounded,
size: 40,
color: Colors.white,
),
SizedBox(height: 20),
Text("BT Distancer",style:TextStyle(
fontWeight: FontWeight.bold,
color: Colors.white
) ,)
],
),
label: Text('',
style: TextStyle(fontWeight: FontWeight.bold)),
onPressed: () {},
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(10)),
color: Colors.blue[200],
),
label: Text('',
style: TextStyle(fontWeight: FontWeight.bold)),
onPressed: () {},
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(10)),
color: Colors.blue[200],
),
),
),
),
Expanded(
child: Padding(
padding: const EdgeInsets.fromLTRB(8, 0, 8, 0),
child: ButtonTheme(
minWidth: 100.0,
height: 150.0,
child: RaisedButton.icon(
color: Colors.greenAccent,
icon: Icon(
Icons.face_unlock_sharp,
size: 60,
color: Colors.white,
),
label: Text(
'',
style: TextStyle(fontWeight: FontWeight.bold),
Expanded(
child: Padding(
padding: const EdgeInsets.fromLTRB(8, 0, 8, 0),
child: ButtonTheme(
minWidth: 100.0,
height: 150.0,
child: RaisedButton.icon(
color: Colors.greenAccent,
icon: Column(
children: [
Icon(
Icons.face_unlock_sharp,
size: 60,
color: Colors.white,
),
SizedBox(height: 20),
Text("Mask Detector",style:TextStyle(
fontWeight: FontWeight.bold,
color: Colors.white
) ,)
],
),
label: Text(
'',
style: TextStyle(fontWeight: FontWeight.bold),
),
onPressed: () {
print('face mask detection');
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => invoker())
);
// Navigator.pushNamed(context, '/invoker');
},
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(10)),
),
onPressed: () {
print('face mask detection');
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => invoker())
);
// Navigator.pushNamed(context, '/invoker');
},
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(10)),
),
),
),
)
],
),
SizedBox(height: 30),
Row(
children: [
Expanded(
child: Padding(
padding: const EdgeInsets.fromLTRB(8, 0, 8, 0),
child: ButtonTheme(
minWidth: 100.0,
height: 150.0,
child: RaisedButton.icon(
icon: Icon(
Icons.view_stream_outlined,
size: 40,
color: Colors.white,
)
],
),
SizedBox(height: 30),
Row(
children: [
Expanded(
child: Padding(
padding: const EdgeInsets.fromLTRB(8, 0, 8, 0),
child: ButtonTheme(
minWidth: 100.0,
height: 150.0,
child: RaisedButton.icon(
icon: Column(
children: [
Icon(
Icons.view_stream_outlined,
size: 40,
color: Colors.white,
),
SizedBox(height: 20),
Text("Heart Monitor",style:TextStyle(
fontWeight: FontWeight.bold,
color: Colors.white
) ,)
],
),
label: Text('',
style: TextStyle(fontWeight: FontWeight.bold)),
onPressed: () {
// action when button is pressed route to heart rate measurer
Navigator.push(context, MaterialPageRoute(builder: (context) => HeartRateScreen() ));
},
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(10)),
color: Colors.redAccent,
),
label: Text('',
style: TextStyle(fontWeight: FontWeight.bold)),
onPressed: () {
// action when button is pressed route to heart rate measurer
Navigator.push(context, MaterialPageRoute(builder: (context) => HeartRateScreen() ));
},
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(10)),
color: Colors.redAccent,
),
),
),
),
Expanded(
child: Padding(
padding: const EdgeInsets.fromLTRB(8, 0, 8, 0),
child: ButtonTheme(
minWidth: 100.0,
height: 150.0,
child: RaisedButton.icon(
color: Colors.purple[200],
icon: Icon(
Icons.online_prediction_sharp,
size: 60,
color: Colors.white,
),
label: Text(
'',
style: TextStyle(fontWeight: FontWeight.bold),
Expanded(
child: Padding(
padding: const EdgeInsets.fromLTRB(8, 0, 8, 0),
child: ButtonTheme(
minWidth: 100.0,
height: 150.0,
child: RaisedButton.icon(
color: Colors.purple[200],
icon: Column(
children: [
Icon(
Icons.online_prediction_sharp,
size: 60,
color: Colors.white,
),
SizedBox(height: 20),
Text("Self-Carer",style:TextStyle(
fontWeight: FontWeight.bold,
color: Colors.white
) ,)
],
),
label: Text(
'',
style: TextStyle(fontWeight: FontWeight.bold),
),
onPressed: () {
Navigator.push(context, MaterialPageRoute(builder: (context)=> SC_main()));
},
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(10)),
),
onPressed: () {},
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(10)),
),
),
),
)
],
),
],
)
],
),
],
),
),
);
}
......
......@@ -9,23 +9,40 @@ class HeartRateScreen extends StatelessWidget {
appBar: AppBar(
title: Text('Heart Rate Detector'),
),
body: Column(
children: [
Padding(
padding: const EdgeInsets.all(8.0),
child: Image.asset('lib/assets/images/pulse.gif'),
),
SizedBox(height: 20),
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
ElevatedButton(
onPressed: () => Navigator.push(context, MaterialPageRoute(builder: (context) => HomePage(),)),
child: Text('Measure Heart Rate'),
),
],
),
],
body: Container(
color: Colors.white,
child: Column(
children: [
Padding(
padding: const EdgeInsets.all(8.0),
child: Image.asset('lib/assets/images/pulse.gif'),
),
SizedBox(height: 20),
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.fromLTRB(8,70,8,8),
child: SizedBox(
height: 70,
width: 350,
child: ElevatedButton(
style: ElevatedButton.styleFrom(
primary: Colors.red[300],
elevation: 15,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(12)
)
),
onPressed: () => Navigator.push(context, MaterialPageRoute(builder: (context) => HomePage(),)),
child: Text('Measure Heart Rate'),
),
),
),
],
),
],
),
),
);
}
......
......@@ -11,23 +11,40 @@ class invoker extends StatelessWidget {
appBar: AppBar(
title: Text('Face Mask Detector'),
),
body: Column(
children: [
Padding(
padding: const EdgeInsets.all(8.0),
child: Image.asset('lib/assets/images/wear.gif'),
),
SizedBox(height: 20),
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
ElevatedButton(
onPressed: () => invokeCamera(),
child: Text('Detect Mask'),
),
],
),
],
body: Container(
color: Colors.white,
child: Column(
children: [
Padding(
padding: const EdgeInsets.all(8.0),
child: Image.asset('lib/assets/images/wear.gif'),
),
SizedBox(height: 20),
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.fromLTRB(8,70,8,8),
child: SizedBox(
height: 70,
width: 350,
child: ElevatedButton(
style: ElevatedButton.styleFrom(
primary: Colors.blue[300],
elevation: 15,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(12)
)
),
onPressed: () => invokeCamera(),
child: Text('Detect Mask'),
),
),
),
],
),
],
),
),
);
}
......
import 'package:covidefender/pages/self_carer/model/MessageSender.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:google_fonts/google_fonts.dart';
class SC_medicalResult extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Results'),
),
body: SingleChildScrollView(
child: Container(
color: Colors.white,
child: Column(
children: [
Center(
child: Container(
width: MediaQuery.of(context).size.width,
height: MediaQuery.of(context).size.height / 2.5,
child: Image.asset('lib/assets/images/lab.gif')),
),
SizedBox(
height: 10,
),
Padding(
padding: const EdgeInsets.all(16.0),
child: Text("Request Medical Officer Support",
style: GoogleFonts.lato(
color: Colors.green,
fontSize: 24,
fontWeight: FontWeight.bold,
letterSpacing: 2)),
),
SizedBox(
height: 10,
),
Padding(
padding: const EdgeInsets.fromLTRB(20,50,50,10),
child: Text(
"I agree To send My Details and location to Medical Officer ",
style: GoogleFonts.adamina(color: Colors.blue,fontSize: 16,fontStyle: FontStyle.italic,wordSpacing: 2),
),
),
SizedBox(
height: 60,
),
SizedBox(
height: 70,
width: 350,
child: ElevatedButton(
style: ElevatedButton.styleFrom(
primary: Colors.red[300],
elevation: 15,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(12)
)
),
onPressed: () {
MessageSender m = new MessageSender();
m.SENDSMS();
},
child: Text('SEND SMS',style: GoogleFonts.lato(
fontWeight: FontWeight.bold,
fontSize: 16
),)),
)
],
),
),
),
);
}
}
import 'package:covidefender/pages/self_carer/SC_medicalSupport.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:google_fonts/google_fonts.dart';
class SC_resultScreen extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Results'),
),
body: SingleChildScrollView(
child: Container(
color: Colors.white,
child: Column(
children: [
Center(
child: Container(
width: MediaQuery.of(context).size.width,
height: MediaQuery.of(context).size.height / 2.5,
child: Image.asset('lib/assets/images/lab.gif')),
),
SizedBox(
height: 10,
),
Text("Analysis Results",
style: GoogleFonts.lato(
color: Colors.blue,
fontSize: 24,
fontWeight: FontWeight.bold,
letterSpacing: 2)),
SizedBox(
height: 10,
),
Padding(
padding: const EdgeInsets.fromLTRB(20,50,50,10),
child: Text(
"Seem's you are having Symptoms Related to Covid19.\n"
"Let's Get Medical Assistance ! \n"
"Click Below Button To Get a Health Officer",
style: GoogleFonts.adamina(color: Colors.red ,fontSize: 16,fontStyle: FontStyle.italic,wordSpacing: 2),
),
),
SizedBox(
height: 60,
),
SizedBox(
height: 70,
width: 350,
child: ElevatedButton(
style: ElevatedButton.styleFrom(
primary: Colors.red[300],
elevation: 15,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(12)
)
),
onPressed: () {
Navigator.of(context).push(MaterialPageRoute(builder: (context)=>SC_medicalResult()));
},
child: Text('Medical Support',style: GoogleFonts.lato(
fontWeight: FontWeight.bold,
fontSize: 16
),)),
)
],
),
),
),
);
}
}
import 'dart:collection';
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter_sms/flutter_sms.dart';
class MessageSender {
List<String> recipients= ["+94776957629"];
String Name;
String phoneNumber;
String Address;
String HomePhone;
//
// Map<String,String> myDetails = {
// "Name" : "Indika Nuwan",
// "Address" : "02 nd post ,Mawanella",
// "HomePhone" : "03522444555",
// "message" : "This Patient Need Imediate assistance"
// };
// MessageSender(this.recipients, this.message);
void SENDSMS () async{
print("Executing get data");
final CollectionReference userlist =
FirebaseFirestore.instance.collection("users");
userlist.get().then((datasnapshot){
print("Executing get data ...");
FirebaseFirestore.instance.collection("users").get().then((QuerySnapshot snapshot){
snapshot.docs.forEach((doc) async {
print(doc["Name"]);
print(doc["Address"]);
print(doc["Home phone"]);
print(doc["mobile"]);
Map<String,String> UserDetails = {
"Name" : doc["Name"],
"Address" : doc["Address"],
"HomePhone" : doc["Home phone"],
"message" : "This Patient Need Imediate assistance"
};
print("UserDetails : "+UserDetails.toString());
String result = await sendSMS(message: UserDetails.toString(), recipients: recipients).catchError((onError)=>print(onError));
print("result");
});
});
});
}
}
import 'dart:ui';
class Symptoms {
String symptomname;
bool value;
List<Color> gradientColors;
Symptoms(this.symptomname, this.value,{this.gradientColors});
@override
String toString() {
return 'Symptoms{symptomname: $symptomname, value: $value}';
}
}
\ No newline at end of file
import 'package:flutter/material.dart';
class CustomColors {
static Color primaryTextColor = Colors.white;
static Color dividerColor = Colors.white54;
static Color pageBackgroundColor = Color(0xFF2D2F41);
static Color menuBackgroundColor = Color(0xFF242634);
static Color clockBG = Color(0xFF444974);
static Color clockOutline = Color(0xFFEAECFF);
static Color secHandColor = Colors.orange[300];
static Color minHandStatColor = Color(0xFF748EF6);
static Color minHandEndColor = Color(0xFF77DDFF);
static Color hourHandStatColor = Color(0xFFC279FB);
static Color hourHandEndColor = Color(0xFFEA74AB);
}
class GradientColors {
final List<Color> colors;
GradientColors(this.colors);
static List<Color> sky = [Color(0xFF6448FE), Color(0xFF5FC6FF)];
static List<Color> sunset = [Color(0xFFFE6197), Color(0xFFFFB463)];
static List<Color> sea = [Color(0xFF61A3FE), Color(0xFF63FFD5)];
static List<Color> mango = [Color(0xFFFFA738), Color(0xFFFFE130)];
static List<Color> fire = [Color(0xFFFF5DCD), Color(0xFFFF8484)];
}
class GradientTemplate {
static List<GradientColors> gradientTemplate = [
GradientColors(GradientColors.sky),
GradientColors(GradientColors.sunset),
GradientColors(GradientColors.sea),
GradientColors(GradientColors.mango),
GradientColors(GradientColors.fire),
];
}
import 'dart:collection';
import 'package:covidefender/pages/self_carer/SC_result_screen.dart';
import 'package:covidefender/pages/self_carer/model/colors.dart';
import 'package:flutter/material.dart';
import 'package:quiver/collection.dart';
import 'model/Symptoms.dart';
class SC_main extends StatefulWidget {
@override
SC_mainState createState() => SC_mainState();
}
class SC_mainState extends State<SC_main> {
bool isPositiveMatch = false;
// String symptom = "i am a symptom";
// HashMap symptomMap = new HashMap<int,String>();
Map<String, bool> symptomList = HashMap();
Map<String, bool> values = {
'Fever With Chills': false,
'Cough and Sneezing': false,
'Difficulty in Breathing': false,
'Sore throat / Blush lips': false,
'Mustle Pain or Ache': false,
};
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("Self-Carer"),
),
body: Container(
child: SingleChildScrollView(
child: Column(
children: [
Container(
width: MediaQuery.of(context).size.width,
height: MediaQuery.of(context).size.height /2.5,
child: Image.asset(
'lib/assets/images/hospital.gif',
)),
SizedBox(
height: 350,
child: new ListView(
children: values.keys.map((String key) {
return Container(
margin: EdgeInsets.only(bottom: 20,left: 10,right: 10),
decoration: BoxDecoration(
boxShadow: [
BoxShadow(
color: Colors.blue.withOpacity(0.4) ,blurRadius: 8, offset: Offset(4,4),spreadRadius: 4
)
],
gradient: LinearGradient(
colors: [Colors.blue[600], Colors.white],
begin: Alignment.centerLeft,
end: Alignment.centerRight,
),
borderRadius: BorderRadius.all(Radius.circular(24)),
),
child: SizedBox(
height: 90,
child: Padding(
padding: const EdgeInsets.all(8.0),
child: new CheckboxListTile(
title: new Text(key,style:TextStyle(
color: Colors.white,
fontFamily: 'avenir',
),),
value: values[key],
onChanged: (bool value) {
setState(() {
values[key] = value;
symptomList.clear();
values.forEach((key, value) {
print('${key}: ${value}');
if (value) {
symptomList.putIfAbsent(key, () => value);
print(
'Selected Items::' + symptomList.toString());
}
});
});
print(key);
},
),
),
),
);
}).toList(),
),
),
],
),
),
),
floatingActionButton: FloatingActionButton(
onPressed: () => {
if (symptomList.isEmpty)
{print("Please select your Symptoms")}
else
{
if(symptomList.containsKey('Fever With Chills')
&& symptomList.containsKey('Cough and Sneezing')
&& symptomList.containsKey('Difficulty in Breathing')
&& symptomList.containsKey('Sore throat / Blush lips')
&& symptomList.containsKey('Mustle Pain or Ache')){
print("Positive Match Found Immediate Treatements needed !"),
Navigator.push(context,
MaterialPageRoute(builder: (context) => SC_resultScreen()))
}
}
},
child: Icon(
// Icons.next_plan_outlined
Icons.double_arrow_rounded)),
);
}
}
......@@ -33,6 +33,8 @@ dependencies:
wakelock: ^0.1.4+1
charts_flutter: ^0.9.0
flutter_spinkit: "^4.1.2"
google_fonts: ^1.1.2
flutter_sms: ^2.1.1
......@@ -143,6 +145,8 @@ flutter:
- lib/assets/labels.txt
- assets/
- lib/assets/images/wear.gif
- lib/assets/images/hospital.gif
- lib/assets/images/lab.gif
# To add assets to your application, add an assets section, like this:
# assets:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment