Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
2
2021-035-CoviDefender
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
1
Merge Requests
1
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
2021-035
2021-035-CoviDefender
Commits
e450ff00
Commit
e450ff00
authored
Jun 26, 2021
by
Piyumi Dayarathna
💬
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
STracker - added quiz functionality to symptoms part
parent
b0cc3d9b
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
551 additions
and
11 deletions
+551
-11
lib/STracker/Symptoms/symptomsQuizPage.dart
lib/STracker/Symptoms/symptomsQuizPage.dart
+275
-0
lib/STracker/Symptoms/symptomsQuizStartPage.dart
lib/STracker/Symptoms/symptomsQuizStartPage.dart
+87
-0
lib/STracker/Symptoms/symptomsResultPage.dart
lib/STracker/Symptoms/symptomsResultPage.dart
+107
-0
lib/STracker/finalResult.dart
lib/STracker/finalResult.dart
+5
-5
lib/STracker/levelsDashboard.dart
lib/STracker/levelsDashboard.dart
+29
-6
lib/assets/pythonSymptoms.json
lib/assets/pythonSymptoms.json
+48
-0
No files found.
lib/STracker/Symptoms/symptomsQuizPage.dart
0 → 100644
View file @
e450ff00
import
'dart:async'
;
import
'dart:convert'
;
import
'package:covidefender/STracker/SocialDistance/socialDistanceResultPage.dart'
;
import
'package:covidefender/STracker/Symptoms/symptomsResultPage.dart'
;
import
'package:flutter/material.dart'
;
import
'package:flutter/services.dart'
;
class
getjsonSymptoms
extends
StatelessWidget
{
@override
Widget
build
(
BuildContext
context
)
{
return
FutureBuilder
(
future:
DefaultAssetBundle
.
of
(
context
)
.
loadString
(
"lib/assets/pythonSymptoms.json"
),
builder:
(
context
,
snapshot
)
{
List
mydata
=
json
.
decode
(
snapshot
.
data
.
toString
());
if
(
mydata
==
null
)
{
return
Scaffold
(
body:
Center
(
child:
Text
(
"Loading"
,
),
),
);
// return quizpage();
}
else
{
return
quizpageSymptoms
(
mydata:
mydata
);
}
});
}
}
class
quizpageSymptoms
extends
StatefulWidget
{
var
mydata
;
quizpageSymptoms
({
Key
key
,
@required
this
.
mydata
})
:
super
(
key:
key
);
@override
_quizpageSymptomsState
createState
()
=>
_quizpageSymptomsState
(
mydata
);
}
class
_quizpageSymptomsState
extends
State
<
quizpageSymptoms
>
{
var
mydata
;
_quizpageSymptomsState
(
this
.
mydata
);
Color
colortoshow
=
Colors
.
indigoAccent
;
Color
right
=
Colors
.
green
;
Color
wrong
=
Colors
.
red
;
int
marks
=
0
;
int
i
=
1
;
int
x
=
0
;
int
timer
=
60
;
String
showtimer
=
"60"
;
int
hangState
=
0
;
Map
<
String
,
Color
>
btncolor
=
{
"a"
:
Colors
.
indigoAccent
,
"b"
:
Colors
.
indigoAccent
,
"c"
:
Colors
.
indigoAccent
,
"d"
:
Colors
.
indigoAccent
};
bool
canceltimer
=
false
;
@override
void
initState
()
{
starttimer
();
super
.
initState
();
}
void
starttimer
()
async
{
const
onesec
=
Duration
(
seconds:
1
);
Timer
.
periodic
(
onesec
,
(
Timer
t
)
{
setState
(()
{
if
(
timer
<
1
)
{
t
.
cancel
();
nextquestion
();
}
else
if
(
canceltimer
==
true
)
{
t
.
cancel
();
}
else
{
timer
=
timer
-
1
;
}
showtimer
=
timer
.
toString
();
});
});
}
void
nextquestion
()
{
canceltimer
=
false
;
timer
=
60
;
setState
(()
{
if
(
i
<
5
)
{
i
++;
}
else
{
Navigator
.
of
(
context
).
pushReplacement
(
MaterialPageRoute
(
builder:
(
context
)
=>
symptomsResultPage
(
marks:
marks
),
));
}
btncolor
[
"a"
]
=
Colors
.
indigoAccent
;
btncolor
[
"b"
]
=
Colors
.
indigoAccent
;
btncolor
[
"c"
]
=
Colors
.
indigoAccent
;
btncolor
[
"d"
]
=
Colors
.
indigoAccent
;
});
starttimer
();
}
void
checkanswer
(
String
k
)
{
if
(
mydata
[
2
][
i
.
toString
()]
==
mydata
[
1
][
i
.
toString
()][
k
])
{
marks
=
marks
+
5
;
colortoshow
=
right
;
}
else
{
colortoshow
=
wrong
;
x
=
x
+
1
;
showHangman
(
x
);
}
setState
(()
{
btncolor
[
k
]
=
colortoshow
;
canceltimer
=
true
;
});
Timer
(
Duration
(
seconds:
2
),
nextquestion
);
}
void
showHangman
(
x
)
{
if
(
x
==
1
)
{
hangState
=
1
;
}
else
if
(
x
==
2
)
{
hangState
=
2
;
}
else
if
(
x
==
3
)
{
hangState
=
3
;
}
else
if
(
x
==
4
)
{
hangState
=
4
;
}
else
{
hangState
=
5
;
}
}
Widget
choicebutton
(
String
k
)
{
return
Padding
(
padding:
EdgeInsets
.
symmetric
(
vertical:
10.0
,
horizontal:
20.0
,
),
child:
MaterialButton
(
onPressed:
()
=>
checkanswer
(
k
),
child:
Text
(
mydata
[
1
][
i
.
toString
()][
k
],
style:
TextStyle
(
color:
Colors
.
white
,
fontSize:
16.0
,
),
maxLines:
1
,
),
color:
btncolor
[
k
],
splashColor:
Colors
.
indigo
[
700
],
highlightColor:
Colors
.
indigo
[
700
],
minWidth:
200.0
,
height:
45.0
,
shape:
RoundedRectangleBorder
(
borderRadius:
BorderRadius
.
circular
(
20.0
)),
),
);
}
@override
Widget
build
(
BuildContext
context
)
{
SystemChrome
.
setPreferredOrientations
(
[
DeviceOrientation
.
portraitDown
,
DeviceOrientation
.
portraitUp
]);
return
WillPopScope
(
onWillPop:
()
{
return
showDialog
(
context:
context
,
builder:
(
context
)
=>
AlertDialog
(
title:
Text
(
"QuizStar - Warning"
,
),
content:
Text
(
"You can't go back at this stage"
),
actions:
<
Widget
>[
FlatButton
(
onPressed:
()
{
Navigator
.
of
(
context
).
pop
();
},
child:
Text
(
'OK'
,
),
)
],
));
},
child:
Scaffold
(
body:
Column
(
children:
<
Widget
>[
Expanded
(
flex:
5
,
child:
Material
(
elevation:
20.0
,
child:
Container
(
width:
200.0
,
height:
150.0
,
child:
Column
(
children:
<
Widget
>[
Material
(
child:
Container
(
width:
200.0
,
height:
200.0
,
child:
ClipRRect
(
child:
Image
(
image:
AssetImage
(
"lib/assets/images/
$hangState
.png"
),
),
),
),
),
],
)),
),
),
Expanded
(
flex:
2
,
child:
Container
(
padding:
EdgeInsets
.
all
(
15.0
),
alignment:
Alignment
.
bottomLeft
,
child:
Text
(
mydata
[
0
][
i
.
toString
()],
style:
TextStyle
(
fontSize:
16.0
,
fontWeight:
FontWeight
.
w700
,
),
),
decoration:
BoxDecoration
(
color:
Colors
.
blueAccent
,
),
),
),
Expanded
(
flex:
6
,
child:
Container
(
child:
Column
(
mainAxisAlignment:
MainAxisAlignment
.
center
,
children:
<
Widget
>[
choicebutton
(
'a'
),
choicebutton
(
'b'
),
choicebutton
(
'c'
),
choicebutton
(
'd'
),
],
),
),
),
Expanded
(
flex:
1
,
child:
Container
(
alignment:
Alignment
.
topCenter
,
child:
Center
(
child:
Text
(
showtimer
,
style:
TextStyle
(
fontSize:
35.0
,
fontWeight:
FontWeight
.
w700
,
),
),
),
decoration:
BoxDecoration
(
color:
Colors
.
red
,
),
),
),
],
),
),
);
}
}
lib/STracker/Symptoms/symptomsQuizStartPage.dart
0 → 100644
View file @
e450ff00
import
'package:covidefender/STracker/SocialDistance/socialDistanceQuizPage.dart'
;
import
'package:covidefender/STracker/Symptoms/symptomsQuizPage.dart'
;
import
'package:flutter/material.dart'
;
import
'package:flutter/services.dart'
;
class
symptomsQuizStartPage
extends
StatefulWidget
{
@override
_symptomsQuizStartPageState
createState
()
=>
_symptomsQuizStartPageState
();
}
class
_symptomsQuizStartPageState
extends
State
<
symptomsQuizStartPage
>
{
List
<
String
>
images
=
[
"lib/assets/images/startQuiz.png"
,
];
Widget
customcard
(
String
type
,
String
image
)
{
return
Padding
(
padding:
EdgeInsets
.
all
(
20.0
,
),
child:
InkWell
(
onTap:
()
{
Navigator
.
of
(
context
).
pushReplacement
(
MaterialPageRoute
(
builder:
(
context
)
=>
getjsonSymptoms
(),
));
},
child:
Material
(
color:
Colors
.
indigoAccent
,
elevation:
10.0
,
borderRadius:
BorderRadius
.
circular
(
20.0
),
child:
Container
(
child:
Column
(
children:
<
Widget
>[
Padding
(
padding:
EdgeInsets
.
symmetric
(
vertical:
10.0
,
),
child:
Material
(
elevation:
5.0
,
borderRadius:
BorderRadius
.
circular
(
100.0
),
child:
Container
(
height:
100.0
,
width:
100.0
,
child:
ClipOval
(
child:
Image
(
fit:
BoxFit
.
contain
,
image:
AssetImage
(
image
,
),
),
),
),
),
),
Center
(
child:
Text
(
type
,
style:
TextStyle
(
fontSize:
24.0
,
fontWeight:
FontWeight
.
w700
,
),
),
),
],
),
),
),
),
);
}
@override
Widget
build
(
BuildContext
context
)
{
SystemChrome
.
setPreferredOrientations
(
[
DeviceOrientation
.
portraitDown
,
DeviceOrientation
.
portraitUp
]);
return
Scaffold
(
appBar:
AppBar
(
title:
Text
(
"STracker"
),
),
body:
ListView
(
children:
<
Widget
>[
customcard
(
"Start Quiz"
,
images
[
0
]),
],
),
);
}
}
lib/STracker/Symptoms/symptomsResultPage.dart
0 → 100644
View file @
e450ff00
import
'package:flutter/material.dart'
;
import
'../levelsDashboard.dart'
;
import
'../variables.dart'
;
class
symptomsResultPage
extends
StatefulWidget
{
int
marks
;
symptomsResultPage
({
Key
key
,
@required
this
.
marks
})
:
super
(
key:
key
);
@override
_symptomsResultPageState
createState
()
=>
_symptomsResultPageState
(
marks
);
}
class
_symptomsResultPageState
extends
State
<
symptomsResultPage
>
{
int
marks
;
_symptomsResultPageState
(
this
.
marks
);
@override
void
initState
()
{
testMethod
();
super
.
initState
();
}
void
testMethod
()
{
marks5
=
this
.
marks
;
}
Widget
build
(
BuildContext
context
)
{
return
Scaffold
(
appBar:
AppBar
(
title:
Text
(
"Result for Social Distance"
,
),
),
body:
Column
(
children:
<
Widget
>[
Expanded
(
flex:
7
,
child:
Material
(
elevation:
10.0
,
child:
Container
(
width:
300.0
,
height:
300.0
,
child:
Column
(
children:
<
Widget
>[
Material
(
child:
Container
(
width:
300.0
,
height:
300.0
,
child:
ClipRRect
(
child:
Image
(
image:
AssetImage
(
"lib/assets/images/gameover.jpg"
),
),
),
),
),
Padding
(
padding:
EdgeInsets
.
symmetric
(
vertical:
5.0
,
horizontal:
15.0
,
),
child:
Center
(
child:
Text
(
"You Scored
$marks
marks"
,
style:
TextStyle
(
fontSize:
20.0
,
fontWeight:
FontWeight
.
w700
,
),
),
)),
],
)),
),
),
Expanded
(
flex:
4
,
child:
Row
(
mainAxisAlignment:
MainAxisAlignment
.
center
,
children:
<
Widget
>[
OutlineButton
(
onPressed:
()
{
Navigator
.
of
(
context
).
pushReplacement
(
MaterialPageRoute
(
builder:
(
context
)
=>
levelsDashboard
(),
));
},
child:
Text
(
"Continue"
,
style:
TextStyle
(
fontSize:
18.0
,
),
),
padding:
EdgeInsets
.
symmetric
(
vertical:
10.0
,
horizontal:
25.0
,
),
borderSide:
BorderSide
(
width:
3.0
,
color:
Colors
.
indigo
),
splashColor:
Colors
.
indigoAccent
,
)
],
),
)
],
),
);
}
}
lib/STracker/finalResult.dart
View file @
e450ff00
...
...
@@ -52,7 +52,7 @@ class _finalResultState extends State<finalResult> {
),
child:
Center
(
child:
Text
(
"Hand Washing -
$marks1
marks
"
,
"Hand Washing -
$marks1
"
,
style:
TextStyle
(
fontSize:
20.0
,
fontWeight:
FontWeight
.
w700
,
...
...
@@ -66,7 +66,7 @@ class _finalResultState extends State<finalResult> {
),
child:
Center
(
child:
Text
(
"Mask Wearing -
$marks2
marks
"
,
"Mask Wearing -
$marks2
"
,
style:
TextStyle
(
fontSize:
20.0
,
fontWeight:
FontWeight
.
w700
,
...
...
@@ -80,7 +80,7 @@ class _finalResultState extends State<finalResult> {
),
child:
Center
(
child:
Text
(
"Social Distance -
$marks3
marks
"
,
"Social Distance -
$marks3
"
,
style:
TextStyle
(
fontSize:
20.0
,
fontWeight:
FontWeight
.
w700
,
...
...
@@ -94,7 +94,7 @@ class _finalResultState extends State<finalResult> {
),
child:
Center
(
child:
Text
(
"Public places -
$marks4
marks
"
,
"Public places -
$marks4
"
,
style:
TextStyle
(
fontSize:
20.0
,
fontWeight:
FontWeight
.
w700
,
...
...
@@ -108,7 +108,7 @@ class _finalResultState extends State<finalResult> {
),
child:
Center
(
child:
Text
(
"Symptoms -
$marks5
marks
"
,
"Symptoms -
$marks5
"
,
style:
TextStyle
(
fontSize:
20.0
,
fontWeight:
FontWeight
.
w700
,
...
...
lib/STracker/levelsDashboard.dart
View file @
e450ff00
import
'package:covidefender/STracker/MaskWearing/maskWearingQuizStartPage.dart'
;
import
'package:covidefender/STracker/PublicPlaces/publicPlacesQuizStartPage.dart'
;
import
'package:covidefender/STracker/SocialDistance/socialDistanceQuizStartPage.dart'
;
import
'package:covidefender/STracker/Symptoms/symptomsQuizStartPage.dart'
;
import
'package:covidefender/STracker/finalResult.dart'
;
import
'package:flutter/material.dart'
;
import
'HandWashing/home.dart'
;
...
...
@@ -166,12 +168,12 @@ class _levelsDashboardState extends State<levelsDashboard> {
mainAxisAlignment:
MainAxisAlignment
.
center
,
children:
<
Widget
>[
FlatButton
(
//
onPressed: () {
//
Navigator.push(
//
context,
// MaterialPageRoute(builder: (context) => EAnalyzerDash
()),
//
);
//
},
onPressed:
()
{
Navigator
.
push
(
context
,
MaterialPageRoute
(
builder:
(
context
)
=>
symptomsQuizStartPage
()),
);
},
child:
Image
.
asset
(
'lib/assets/images/symptoms.png'
),
),
...
...
@@ -179,6 +181,27 @@ class _levelsDashboardState extends State<levelsDashboard> {
style:
TextStyle
(
fontSize:
20.0
))
],
)),
Card
(
shape:
RoundedRectangleBorder
(
borderRadius:
BorderRadius
.
circular
(
8
)),
elevation:
4
,
child:
Column
(
mainAxisAlignment:
MainAxisAlignment
.
center
,
children:
<
Widget
>[
FlatButton
(
onPressed:
()
{
Navigator
.
push
(
context
,
MaterialPageRoute
(
builder:
(
context
)
=>
finalResult
()),
);
},
child:
Image
.
asset
(
'lib/assets/images/symptoms.png'
),
),
Text
(
'Final Result'
,
style:
TextStyle
(
fontSize:
20.0
))
],
)),
],
),
)
...
...
lib/assets/pythonSymptoms.json
0 → 100644
View file @
e450ff00
[
{
"1"
:
"Question 1: yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy"
,
"2"
:
"Question 2: mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm"
,
"3"
:
"Question 3: sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss"
,
"4"
:
"Question 4: ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd"
,
"5"
:
"Question 5: eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
},
{
"1"
:
{
"a"
:
"Keep my hands beautiful"
,
"b"
:
"Wash my hands of germs"
,
"c"
:
"To get smooth feel to hand"
,
"d"
:
"To get a new look on hand"
},
"2"
:
{
"a"
:
"Operate by hand"
,
"b"
:
"Operate by mouth"
,
"c"
:
"Operate by nose"
,
"d"
:
"Operate by leg"
},
"3"
:
{
"a"
:
"May be"
,
"b"
:
"Sometimes"
,
"c"
:
"Yes, it is must"
,
"d"
:
"Never"
},
"4"
:
{
"a"
:
"Yes. must to do"
,
"b"
:
"Sometimes"
,
"c"
:
"No need to do always"
,
"d"
:
"Not applicable"
},
"5"
:
{
"a"
:
"Tank water"
,
"b"
:
"Filtered water"
,
"c"
:
"Clean, running water"
,
"d"
:
"Well water"
}
},
{
"1"
:
"Wash my hands of germs"
,
"2"
:
"Operate by leg"
,
"3"
:
"Yes, it is must"
,
"4"
:
"Yes. must to do"
,
"5"
:
"Clean, running water"
}
]
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment