Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
2
2022-226
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
0
Merge Requests
0
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
2022-226
2022-226
Commits
43228676
Commit
43228676
authored
Oct 05, 2022
by
Wickramasinghe R.J.P
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'mobile_app_v1' into 'master'
display information using onboarding screens See merge request
!3
parents
1dfd0b7f
564e0c5d
Changes
11
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
986 additions
and
91 deletions
+986
-91
lib/models/disease_description_point.dart
lib/models/disease_description_point.dart
+7
-0
lib/models/disease_individual.dart
lib/models/disease_individual.dart
+7
-0
lib/models/disease_individual_info.dart
lib/models/disease_individual_info.dart
+9
-0
lib/screens/disease_details_screen.dart
lib/screens/disease_details_screen.dart
+13
-8
lib/screens/disease_individual_info_screen.dart
lib/screens/disease_individual_info_screen.dart
+248
-0
lib/screens/disease_individual_screen.dart
lib/screens/disease_individual_screen.dart
+196
-0
lib/screens/disease_intelligence_screen.dart
lib/screens/disease_intelligence_screen.dart
+3
-1
lib/screens/disease_screen.dart
lib/screens/disease_screen.dart
+418
-62
lib/screens/home_screen.dart
lib/screens/home_screen.dart
+7
-13
lib/screens/welcome_screen.dart
lib/screens/welcome_screen.dart
+6
-7
lib/widgets/bottom_nav_bar.dart
lib/widgets/bottom_nav_bar.dart
+72
-0
No files found.
lib/models/disease_description_point.dart
0 → 100644
View file @
43228676
class
DiseaseDescriptionPoint
{
late
String
descriptionPoint
;
DiseaseDescriptionPoint
({
required
this
.
descriptionPoint
,
});
}
lib/models/disease_individual.dart
0 → 100644
View file @
43228676
class
DiseaseIndividualTopic
{
late
String
individualTopic
;
DiseaseIndividualTopic
({
required
this
.
individualTopic
,
});
}
lib/models/disease_individual_info.dart
0 → 100644
View file @
43228676
class
DiseaseIndividualSubTopicInfo
{
late
String
individualTopicInfo
;
late
String
imgUrl
;
DiseaseIndividualSubTopicInfo
({
required
this
.
individualTopicInfo
,
required
this
.
imgUrl
,
});
}
lib/screens/disease_details_screen.dart
View file @
43228676
import
'package:canis_care/screens/disease_individual_screen.dart'
;
import
'package:flutter/material.dart'
;
import
'package:flutter/material.dart'
;
import
'../data/disease_sub_topics.dart'
;
import
'../data/disease_sub_topics.dart'
;
...
@@ -15,6 +16,8 @@ class DiseaseDetails extends StatelessWidget {
...
@@ -15,6 +16,8 @@ class DiseaseDetails extends StatelessWidget {
return
Scaffold
(
return
Scaffold
(
appBar:
AppBar
(
title:
const
Text
(
'Disease Information'
)),
appBar:
AppBar
(
title:
const
Text
(
'Disease Information'
)),
body:
Container
(
body:
Container
(
color:
Colors
.
blue
[
100
],
padding:
EdgeInsets
.
only
(
bottom:
30
),
child:
Column
(
child:
Column
(
crossAxisAlignment:
CrossAxisAlignment
.
stretch
,
crossAxisAlignment:
CrossAxisAlignment
.
stretch
,
children:
[
children:
[
...
@@ -31,15 +34,17 @@ class DiseaseDetails extends StatelessWidget {
...
@@ -31,15 +34,17 @@ class DiseaseDetails extends StatelessWidget {
itemBuilder:
(
BuildContext
context
,
int
index
)
{
itemBuilder:
(
BuildContext
context
,
int
index
)
{
return
GestureDetector
(
return
GestureDetector
(
onTap:
()
{
onTap:
()
{
// Navigator.of(context).push(
Navigator
.
of
(
context
).
push
(
// MaterialPageRoute(
MaterialPageRoute
(
// builder: (context) => DiseaseSubTopic(
builder:
(
context
)
=>
DiseaseIndividual
(
// disease: disease,
disease:
disease
,
// category: categories[index])),
category:
categories
[
index
],
// );
)),
);
},
},
child:
Container
(
child:
Container
(
margin:
const
EdgeInsets
.
all
(
20
),
margin:
const
EdgeInsets
.
only
(
left:
15
,
right:
15
,
bottom:
15
,
top:
10
),
height:
120
,
height:
120
,
child:
Stack
(
child:
Stack
(
children:
[
children:
[
...
@@ -96,7 +101,7 @@ class DiseaseDetails extends StatelessWidget {
...
@@ -96,7 +101,7 @@ class DiseaseDetails extends StatelessWidget {
width:
10
,
width:
10
,
),
),
Text
(
Text
(
"
${disease.diseaseName}
${categories[index].topic}
"
,
"
${disease.diseaseName}
${categories[index].topic}
"
,
style:
const
TextStyle
(
style:
const
TextStyle
(
fontSize:
20
,
color:
Colors
.
white
),
fontSize:
20
,
color:
Colors
.
white
),
)
)
...
...
lib/screens/disease_individual_info_screen.dart
0 → 100644
View file @
43228676
import
'dart:convert'
;
import
'package:flutter/material.dart'
;
import
'package:http/http.dart'
;
import
'package:http/http.dart'
as
http
;
import
'../models/category.dart'
;
import
'../models/disease.dart'
;
import
'../models/disease_individual.dart'
;
import
'../models/disease_individual_info.dart'
;
import
'../widgets/bottom_nav_bar.dart'
;
class
DiseaseIndividualTopicInfo
extends
StatefulWidget
{
final
Disease
disease
;
final
Category
category
;
final
DiseaseIndividualTopic
diseaseIndividualTopic
;
const
DiseaseIndividualTopicInfo
(
{
Key
?
key
,
required
this
.
disease
,
required
this
.
category
,
required
this
.
diseaseIndividualTopic
})
:
super
(
key:
key
);
@override
State
<
DiseaseIndividualTopicInfo
>
createState
()
=>
_DiseaseIndividualTopicInfoState
();
}
class
_DiseaseIndividualTopicInfoState
extends
State
<
DiseaseIndividualTopicInfo
>
{
Client
client
=
http
.
Client
();
List
<
String
>
subTopicsInfo
=
[];
List
<
DiseaseIndividualSubTopicInfo
>
subTopicInfoList
=
[];
int
pageIndex
=
0
;
PageController
?
_pageController
;
@override
void
dispose
()
{
super
.
dispose
();
_pageController
?.
dispose
();
}
@override
void
initState
()
{
_retrieveSubTopicsDetails
();
super
.
initState
();
_pageController
=
PageController
();
}
_retrieveSubTopicsDetails
()
async
{
subTopicsInfo
=
[];
String
retrieveUri
=
"http://192.168.1.102:8000/disease/"
+
widget
.
disease
.
diseaseName
+
"/"
+
widget
.
category
.
topic
+
"/"
+
widget
.
diseaseIndividualTopic
.
individualTopic
+
"/"
;
List
responses
=
json
.
decode
(
utf8
.
decode
((
await
client
.
get
(
Uri
.
parse
(
retrieveUri
))).
bodyBytes
));
for
(
var
element
in
responses
)
{
// String res = element.substring(element.indexOf('#'));
// String res2 = res.replaceAll("#", "");
var
encoded
=
utf8
.
encode
(
element
);
var
decoded
=
utf8
.
decode
(
encoded
);
var
formatted
=
decoded
.
substring
(
1
);
subTopicsInfo
.
add
(
formatted
);
}
// var newDiseases = List<String>.from(diseases);
subTopicInfoList
=
List
.
generate
(
subTopicsInfo
.
length
,
(
index
)
=>
DiseaseIndividualSubTopicInfo
(
imgUrl:
widget
.
category
.
icon
,
individualTopicInfo:
subTopicsInfo
[
index
]));
setState
(()
{});
}
@override
Widget
build
(
BuildContext
context
)
{
return
Scaffold
(
appBar:
AppBar
(
title:
Text
(
widget
.
diseaseIndividualTopic
.
individualTopic
),
),
body:
Container
(
child:
Stack
(
children:
[
Column
(
children:
[
Expanded
(
child:
PageView
(
controller:
_pageController
,
onPageChanged:
(
int
page
)
{
setState
(()
{
pageIndex
=
page
;
});
},
children:
List
.
generate
(
subTopicInfoList
.
length
,
(
index
)
=>
Container
(
padding:
const
EdgeInsets
.
only
(
left:
40
,
right:
40
,
top:
40
,
bottom:
20
),
margin:
const
EdgeInsets
.
only
(
left:
40
,
right:
40
,
top:
40
,
bottom:
10
),
decoration:
BoxDecoration
(
color:
Colors
.
white
,
borderRadius:
BorderRadius
.
circular
(
50
),
boxShadow:
[
BoxShadow
(
color:
Colors
.
cyan
.
withOpacity
(
0.5
),
blurRadius:
20
,
offset:
Offset
.
zero
),
]),
child:
Column
(
children:
[
Expanded
(
child:
Column
(
children:
[
Image
.
asset
(
subTopicInfoList
[
index
].
imgUrl
,
fit:
BoxFit
.
cover
,
height:
160
,
width:
160
,
),
const
SizedBox
(
height:
40
,
),
Expanded
(
flex:
1
,
child:
RawScrollbar
(
thumbColor:
Colors
.
redAccent
,
radius:
Radius
.
circular
(
20
),
thickness:
10
,
child:
SingleChildScrollView
(
scrollDirection:
Axis
.
vertical
,
child:
ClipRRect
(
borderRadius:
BorderRadius
.
circular
(
12.0
),
child:
Container
(
decoration:
BoxDecoration
(
borderRadius:
BorderRadius
.
circular
(
16
),
color:
Colors
.
blue
,
),
margin:
EdgeInsets
.
only
(
top:
5.0
,
bottom:
15
),
child:
Card
(
child:
Container
(
margin:
EdgeInsets
.
only
(
bottom:
30
),
padding:
EdgeInsets
.
all
(
5.0
),
child:
Text
(
subTopicInfoList
[
index
]
.
individualTopicInfo
,
textAlign:
TextAlign
.
start
,
style:
const
TextStyle
(
color:
Colors
.
cyan
,
fontSize:
20
),
),
),
),
),
),
),
),
),
],
)),
Visibility
(
visible:
index
==
subTopicInfoList
.
length
-
1
,
child:
Padding
(
padding:
const
EdgeInsets
.
only
(
top:
10
),
child:
FlatButton
(
onPressed:
()
{
// Navigator.of(context).push(
// MaterialPageRoute(
// builder: (context) =>
// DiseaseDetails(
// disease: diseaseList[index],
// )),
// );
},
color:
Colors
.
cyan
,
shape:
RoundedRectangleBorder
(
borderRadius:
BorderRadius
.
circular
(
50
)),
padding:
const
EdgeInsets
.
all
(
15
),
child:
const
Text
(
"See Also"
,
style:
TextStyle
(
color:
Colors
.
black
,
fontSize:
15
,
fontWeight:
FontWeight
.
bold
),
),
),
),
),
],
),
)),
),
),
RawScrollbar
(
thumbColor:
Colors
.
redAccent
,
radius:
Radius
.
circular
(
20
),
thickness:
10
,
child:
SingleChildScrollView
(
scrollDirection:
Axis
.
horizontal
,
child:
Row
(
mainAxisAlignment:
MainAxisAlignment
.
center
,
children:
List
.
generate
(
subTopicInfoList
.
length
,
(
index
)
=>
GestureDetector
(
onTap:
()
{
_pageController
?.
animateTo
(
MediaQuery
.
of
(
context
).
size
.
width
*
index
,
duration:
const
Duration
(
milliseconds:
500
),
curve:
Curves
.
easeInOut
);
},
child:
Container
(
width:
20
,
height:
20
,
margin:
EdgeInsets
.
all
(
10
),
decoration:
BoxDecoration
(
color:
Colors
.
cyan
,
borderRadius:
BorderRadius
.
circular
(
50
),
border:
Border
.
all
(
width:
6
,
color:
pageIndex
==
index
?
Colors
.
cyanAccent
:
Theme
.
of
(
context
).
canvasColor
)),
),
)),
),
),
),
const
SizedBox
(
height:
20
),
ElevatedButton
(
onPressed:
()
{},
child:
Text
(
"HI"
),
),
],
),
Positioned
(
bottom:
0
,
left:
0
,
right:
0
,
child:
BotBar
())
]),
),
);
}
}
lib/screens/disease_individual_screen.dart
0 → 100644
View file @
43228676
import
'dart:convert'
;
import
'package:canis_care/models/disease_individual.dart'
;
import
'package:flutter/material.dart'
;
import
'package:flutter_staggered_animations/flutter_staggered_animations.dart'
;
import
'package:google_fonts/google_fonts.dart'
;
import
'package:http/http.dart'
;
import
'package:http/http.dart'
as
http
;
import
'../models/category.dart'
;
import
'../models/disease.dart'
;
import
'../widgets/bottom_nav_bar.dart'
;
import
'disease_individual_info_screen.dart'
;
class
DiseaseIndividual
extends
StatefulWidget
{
final
Disease
disease
;
final
Category
category
;
const
DiseaseIndividual
({
Key
?
key
,
required
this
.
disease
,
required
this
.
category
,
})
:
super
(
key:
key
);
@override
State
<
DiseaseIndividual
>
createState
()
=>
_DiseaseIndividualState
();
}
class
_DiseaseIndividualState
extends
State
<
DiseaseIndividual
>
{
Client
client
=
http
.
Client
();
List
<
String
>
subTopics
=
[];
List
<
DiseaseIndividualTopic
>
subTopicList
=
[];
@override
void
initState
()
{
_retrieveSubTopics
();
super
.
initState
();
}
_retrieveSubTopics
()
async
{
subTopics
=
[];
String
retrieveUri
=
"http://192.168.1.102:8000/disease/"
+
widget
.
disease
.
diseaseName
+
"/"
+
widget
.
category
.
topic
+
"/"
;
List
responses
=
json
.
decode
((
await
client
.
get
(
Uri
.
parse
(
retrieveUri
))).
body
);
for
(
var
element
in
responses
)
{
String
res
=
element
.
substring
(
element
.
indexOf
(
'#'
));
String
res2
=
res
.
replaceAll
(
"#"
,
""
);
subTopics
.
add
(
res2
);
}
// var newDiseases = List<String>.from(diseases);
subTopicList
=
List
.
generate
(
subTopics
.
length
,
(
index
)
=>
DiseaseIndividualTopic
(
individualTopic:
subTopics
[
index
]));
setState
(()
{});
}
@override
Widget
build
(
BuildContext
context
)
{
return
Scaffold
(
appBar:
AppBar
(
title:
Text
(
widget
.
disease
.
diseaseName
+
" "
+
widget
.
category
.
topic
)),
body:
Stack
(
children:
[
Container
(
color:
Colors
.
blue
[
100
],
child:
Container
(
margin:
const
EdgeInsets
.
only
(
top:
15.0
),
child:
ListView
.
builder
(
itemCount:
subTopicList
.
length
,
itemBuilder:
(
BuildContext
context
,
int
index
)
{
return
AnimationConfiguration
.
staggeredGrid
(
position:
index
,
columnCount:
subTopicList
.
length
,
child:
SlideAnimation
(
child:
FadeInAnimation
(
child:
GestureDetector
(
onTap:
()
{
Navigator
.
of
(
context
).
push
(
MaterialPageRoute
(
builder:
(
context
)
=>
DiseaseIndividualTopicInfo
(
disease:
widget
.
disease
,
category:
widget
.
category
,
diseaseIndividualTopic:
subTopicList
[
index
],
)),
);
},
child:
Container
(
margin:
const
EdgeInsets
.
only
(
top:
10.0
),
padding:
const
EdgeInsets
.
only
(
left:
5.0
,
right:
5.0
),
child:
Container
(
padding:
const
EdgeInsets
.
symmetric
(
horizontal:
20
),
width:
MediaQuery
.
of
(
context
).
size
.
width
,
margin:
const
EdgeInsets
.
only
(
bottom:
12
),
child:
Container
(
padding:
const
EdgeInsets
.
all
(
16
),
// width: SizeConfig.screenWidth * 0.78,
decoration:
BoxDecoration
(
borderRadius:
BorderRadius
.
circular
(
16
),
color:
Colors
.
cyan
,
),
child:
Row
(
children:
[
Expanded
(
child:
Column
(
crossAxisAlignment:
CrossAxisAlignment
.
start
,
children:
[
Text
(
subTopicList
[
index
].
individualTopic
,
style:
GoogleFonts
.
lato
(
textStyle:
const
TextStyle
(
fontSize:
18
,
fontWeight:
FontWeight
.
bold
,
color:
Colors
.
white
),
),
),
Row
(
crossAxisAlignment:
CrossAxisAlignment
.
center
,
children:
[
const
SizedBox
(
width:
8
),
],
),
const
SizedBox
(
height:
12
),
],
),
),
Container
(
margin:
const
EdgeInsets
.
symmetric
(
horizontal:
10
),
height:
60
,
width:
1
,
color:
Colors
.
grey
[
200
]!.
withOpacity
(
0.7
),
),
/* RotatedBox(
quarterTurns: 3,
child: Text(
reminder!.isCompleted == 1 ? "NOTED" : "WAITING",
style: GoogleFonts.lato(
textStyle: const TextStyle(
fontSize: 14,
fontWeight: FontWeight.bold,
color: Colors.white),
),
),
),*/
]),
),
),
// child: Container(
// width: MediaQuery.of(context).size.width,
// padding: const EdgeInsets.all(15.0),
// child: ListTile(
// title: Text(
// diseaseList[index].diseaseName,
// style: const TextStyle(
// fontSize: 20, fontWeight: FontWeight.w600),
// ),
// onTap: () {
// Navigator.of(context).push(
// MaterialPageRoute(
// builder: (context) => DiseaseDetails(
// disease: diseaseList[index],
// )),
// );
// },
// trailing: IconButton(
// icon: const Icon(Icons.view_headline_sharp),
// // onPressed: () => {_deleteNote((notes[index].id).toString())},
// onPressed: () => {
// Navigator.of(context).push(
// MaterialPageRoute(
// builder: (context) => OnBoarding()),
// )
// }),
// ),
// ),
),
),
),
),
);
},
),
),
),
Positioned
(
bottom:
0
,
left:
0
,
right:
0
,
child:
BotBar
())
]),
);
}
}
lib/screens/disease_intelligence.dart
→
lib/screens/disease_intelligence
_screen
.dart
View file @
43228676
...
@@ -109,7 +109,9 @@ class _DiseaseIntelligenceState extends State<DiseaseIntelligence> {
...
@@ -109,7 +109,9 @@ class _DiseaseIntelligenceState extends State<DiseaseIntelligence> {
onTap:
()
{
onTap:
()
{
Navigator
.
of
(
context
).
push
(
Navigator
.
of
(
context
).
push
(
MaterialPageRoute
(
MaterialPageRoute
(
builder:
(
context
)
=>
DiseaseList
()),
builder:
(
context
)
=>
DiseaseList
(
title:
'All Diseases'
,
)),
);
);
},
},
child:
Container
(
child:
Container
(
...
...
lib/screens/disease_screen.dart
View file @
43228676
import
'dart:convert'
;
import
'dart:convert'
;
import
'package:flutter/material.dart'
;
import
'package:flutter/material.dart'
;
import
'package:google_fonts/google_fonts.dart'
;
import
'package:http/http.dart'
as
http
;
import
'package:http/http.dart'
as
http
;
import
'package:http/http.dart'
;
import
'package:http/http.dart'
;
import
'package:flutter_staggered_animations/flutter_staggered_animations.dart'
;
import
'../models/disease.dart'
;
import
'../models/disease.dart'
;
import
'../models/disease_description_point.dart'
;
import
'../widgets/side_drawer.dart'
;
import
'disease_details_screen.dart'
;
import
'disease_details_screen.dart'
;
class
DiseaseList
extends
StatefulWidget
{
class
DiseaseList
extends
StatefulWidget
{
const
DiseaseList
({
Key
?
key
})
:
super
(
key:
key
);
const
DiseaseList
({
Key
?
key
,
required
this
.
title
})
:
super
(
key:
key
);
final
String
title
;
@override
@override
State
<
DiseaseList
>
createState
()
=>
_DiseaseListState
();
State
<
DiseaseList
>
createState
()
=>
_DiseaseListState
();
...
@@ -17,7 +23,9 @@ class DiseaseList extends StatefulWidget {
...
@@ -17,7 +23,9 @@ class DiseaseList extends StatefulWidget {
class
_DiseaseListState
extends
State
<
DiseaseList
>
{
class
_DiseaseListState
extends
State
<
DiseaseList
>
{
Client
client
=
http
.
Client
();
Client
client
=
http
.
Client
();
List
<
String
>
diseases
=
[];
List
<
String
>
diseases
=
[];
List
<
Disease
>
diseaseList
=
[];
List
<
Disease
>
allDiseaseList
=
[];
List
<
String
>
diseaseDescriptions
=
[];
List
<
DiseaseDescriptionPoint
>
diseaseDescriptionsList
=
[];
@override
@override
void
initState
()
{
void
initState
()
{
...
@@ -25,9 +33,31 @@ class _DiseaseListState extends State<DiseaseList> {
...
@@ -25,9 +33,31 @@ class _DiseaseListState extends State<DiseaseList> {
super
.
initState
();
super
.
initState
();
}
}
_retrieveDiseaseDescription
(
disease
)
async
{
diseaseDescriptions
=
[];
String
retrieveUri
=
"http://192.168.1.102:8000/disease/"
+
disease
+
"/"
;
List
responses
=
json
.
decode
(
utf8
.
decode
((
await
client
.
get
(
Uri
.
parse
(
retrieveUri
))).
bodyBytes
));
for
(
var
element
in
responses
)
{
// String res = element.substring(element.indexOf('#'));
// String res2 = res.replaceAll("#", "");
var
encoded
=
utf8
.
encode
(
element
);
var
decoded
=
utf8
.
decode
(
encoded
);
var
formatted
=
decoded
.
substring
(
1
);
diseaseDescriptions
.
add
(
formatted
);
}
var
newDiseases
=
List
<
String
>.
from
(
diseaseDescriptions
);
diseaseDescriptionsList
=
List
.
generate
(
diseaseDescriptions
.
length
,
(
index
)
=>
DiseaseDescriptionPoint
(
descriptionPoint:
diseaseDescriptions
[
index
]));
setState
(()
{});
}
_retrieveDiseases
()
async
{
_retrieveDiseases
()
async
{
diseases
=
[];
diseases
=
[];
String
retrieveUri
=
"http
://192.168.1.5:8000
/diseases/"
;
String
retrieveUri
=
"http
s://canis-care-app.herokuapp.com
/diseases/"
;
List
responses
=
List
responses
=
json
.
decode
((
await
client
.
get
(
Uri
.
parse
(
retrieveUri
))).
body
);
json
.
decode
((
await
client
.
get
(
Uri
.
parse
(
retrieveUri
))).
body
);
...
@@ -37,78 +67,404 @@ class _DiseaseListState extends State<DiseaseList> {
...
@@ -37,78 +67,404 @@ class _DiseaseListState extends State<DiseaseList> {
diseases
.
add
(
element
);
diseases
.
add
(
element
);
}
}
// var newDiseases = List<String>.from(diseases);
// var newDiseases = List<String>.from(diseases);
d
iseaseList
=
List
.
generate
(
allD
iseaseList
=
List
.
generate
(
diseases
.
length
,
(
index
)
=>
Disease
(
diseaseName:
diseases
[
index
]));
diseases
.
length
,
(
index
)
=>
Disease
(
diseaseName:
diseases
[
index
]));
diseaseList
=
List
.
from
(
allDiseaseList
);
setState
(()
{});
setState
(()
{});
}
}
List
<
Disease
>
diseaseList
=
[];
void
updateDiseaseList
(
String
item
)
{
setState
(()
{
diseaseList
=
allDiseaseList
.
where
((
element
)
=>
element
.
diseaseName
.
toLowerCase
().
contains
(
item
.
toLowerCase
()))
.
toList
();
});
}
@override
@override
Widget
build
(
BuildContext
context
)
{
Widget
build
(
BuildContext
context
)
{
return
Scaffold
(
return
Scaffold
(
appBar:
AppBar
(
title:
const
Text
(
"Diseases"
)),
drawer:
SideDrawer
(),
body:
GridView
.
builder
(
appBar:
AppBar
(
itemCount:
diseaseList
.
length
,
title:
Text
(
widget
.
title
,
textAlign:
TextAlign
.
center
),
shrinkWrap:
true
,
actions:
[
gridDelegate:
const
SliverGridDelegateWithFixedCrossAxisCount
(
Container
(
crossAxisSpacing:
15
,
margin:
const
EdgeInsets
.
only
(
right:
40
),
childAspectRatio:
2.5
,
padding:
EdgeInsets
.
all
(
10.0
),
crossAxisCount:
1
,
child:
ClipOval
(
),
child:
Icon
(
Icons
.
ac_unit_rounded
),
itemBuilder:
(
context
,
index
)
{
),
return
GestureDetector
(
)
onTap:
()
{
],
Navigator
.
of
(
context
).
push
(
),
MaterialPageRoute
(
builder:
(
context
)
=>
DiseaseDetails
(
body:
RefreshIndicator
(
disease:
diseaseList
[
index
],
onRefresh:
()
async
{
)),
_retrieveDiseases
();
);
},
},
child:
Container
(
color:
Colors
.
blue
[
100
],
child:
Column
(
children:
[
Padding
(
padding:
EdgeInsets
.
all
(
16
),
child:
TextField
(
onChanged:
(
value
)
=>
updateDiseaseList
(
value
),
style:
TextStyle
(
color:
Colors
.
white
),
decoration:
InputDecoration
(
filled:
true
,
fillColor:
Color
(
0xff302390
),
border:
OutlineInputBorder
(
borderRadius:
BorderRadius
.
circular
(
8.0
),
borderSide:
BorderSide
.
none
),
hintText:
"Search diseases..."
,
hintStyle:
TextStyle
(
color:
Colors
.
cyan
),
prefixIcon:
Icon
(
Icons
.
search
,
color:
Colors
.
white
,
),
prefixIconColor:
Colors
.
purple
.
shade900
),
),
),
Expanded
(
child:
Container
(
child:
Container
(
margin:
const
EdgeInsets
.
only
(
left:
15
,
top:
30
,
right:
15
),
margin:
const
EdgeInsets
.
only
(
top:
0.0
),
decoration:
BoxDecoration
(
child:
RawScrollbar
(
color:
const
Color
(
0xff87CEEB
),
thumbColor:
Colors
.
redAccent
,
borderRadius:
BorderRadius
.
circular
(
15
)),
radius:
Radius
.
circular
(
10
),
child:
Padding
(
thickness:
10
,
padding:
child:
ListView
.
builder
(
const
EdgeInsets
.
symmetric
(
horizontal:
24
,
vertical:
20
),
itemCount:
diseaseList
.
length
,
child:
Column
(
itemBuilder:
(
BuildContext
context
,
int
index
)
{
crossAxisAlignment:
CrossAxisAlignment
.
start
,
return
AnimationConfiguration
.
staggeredGrid
(
mainAxisAlignment:
MainAxisAlignment
.
spaceBetween
,
position:
index
,
children:
[
columnCount:
diseaseList
.
length
,
Text
(
child:
SlideAnimation
(
diseaseList
[
index
].
diseaseName
,
child:
FadeInAnimation
(
style:
const
TextStyle
(
child:
GestureDetector
(
fontSize:
17
,
onTap:
()
{
color:
Colors
.
black
,
Navigator
.
of
(
context
).
push
(
fontWeight:
FontWeight
.
w900
),
MaterialPageRoute
(
),
builder:
(
context
)
=>
DiseaseDetails
(
Row
(
disease:
diseaseList
[
index
],
mainAxisAlignment:
MainAxisAlignment
.
spaceBetween
,
)),
children:
[
);
Container
(
},
height:
40
,
child:
Container
(
width:
7
,
margin:
const
EdgeInsets
.
only
(
top:
10.0
),
decoration:
BoxDecoration
(
padding:
const
EdgeInsets
.
only
(
color:
const
Color
(
0xff369FFF
),
left:
5.0
,
right:
5.0
),
borderRadius:
BorderRadius
.
circular
(
15
)),
child:
Container
(
),
padding:
const
EdgeInsets
.
symmetric
(
Text
(
horizontal:
20
),
diseaseList
[
index
].
diseaseName
,
width:
MediaQuery
.
of
(
context
).
size
.
width
,
style:
const
TextStyle
(
margin:
const
EdgeInsets
.
only
(
bottom:
12
),
fontSize:
20
,
child:
Container
(
padding:
const
EdgeInsets
.
all
(
16
),
// width: SizeConfig.screenWidth * 0.78,
decoration:
BoxDecoration
(
borderRadius:
BorderRadius
.
circular
(
16
),
color:
Colors
.
blue
,
),
child:
Row
(
children:
[
Expanded
(
child:
Column
(
crossAxisAlignment:
CrossAxisAlignment
.
start
,
children:
[
Text
(
diseaseList
[
index
].
diseaseName
,
style:
GoogleFonts
.
lato
(
textStyle:
const
TextStyle
(
fontSize:
18
,
fontWeight:
FontWeight
.
bold
,
color:
Colors
.
white
),
),
),
const
SizedBox
(
height:
12
,
),
Row
(
crossAxisAlignment:
CrossAxisAlignment
.
center
,
children:
[
Icon
(
Icons
.
remove_red_eye_outlined
,
size:
22
,
),
const
SizedBox
(
width:
8
),
// Text(
// "Get More...",
// style: GoogleFonts.lato(
// textStyle: TextStyle(
// fontSize: 15,
// fontWeight: FontWeight.w800,
// ),
// ),
// ),
Padding
(
padding:
const
EdgeInsets
.
all
(
0
),
child:
FlatButton
(
onPressed:
()
{
Navigator
.
of
(
context
)
.
push
(
MaterialPageRoute
(
builder:
(
context
)
=>
DiseaseDetails
(
disease:
diseaseList
[
index
],
)),
);
},
color:
Colors
.
cyan
,
shape:
RoundedRectangleBorder
(
borderRadius:
BorderRadius
.
circular
(
50
)),
padding:
const
EdgeInsets
.
all
(
5
),
child:
const
Text
(
"Get More"
,
style:
TextStyle
(
color:
Colors
.
black
,
fontSize:
15
,
fontWeight:
FontWeight
.
bold
),
),
),
),
],
),
const
SizedBox
(
height:
12
),
],
),
),
Container
(
margin:
const
EdgeInsets
.
symmetric
(
horizontal:
10
),
height:
60
,
width:
1
,
color:
Colors
.
grey
[
200
]!.
withOpacity
(
0.7
),
),
/* RotatedBox(
quarterTurns: 3,
child: Text(
reminder!.isCompleted == 1 ? "NOTED" : "WAITING",
style: GoogleFonts.lato(
textStyle: const TextStyle(
fontSize: 14,
fontWeight: FontWeight.bold,
fontWeight: FontWeight.bold,
color:
Color
(
0xff006ED3
),
color: Colors.white),
),
),
),*/
IconButton
(
onPressed:
()
async
{
await
_retrieveDiseaseDescription
(
diseaseList
[
index
].
diseaseName
);
_showTestDialog
(
context
,
diseaseList
[
index
].
diseaseName
,
diseaseDescriptionsList
,
diseaseList
[
index
]);
},
icon:
const
Icon
(
Icons
.
perm_device_info_rounded
,
size:
30
,
),
),
]),
),
),
// child: Container(
// width: MediaQuery.of(context).size.width,
// padding: const EdgeInsets.all(15.0),
// child: ListTile(
// title: Text(
// diseaseList[index].diseaseName,
// style: const TextStyle(
// fontSize: 20, fontWeight: FontWeight.w600),
// ),
// onTap: () {
// Navigator.of(context).push(
// MaterialPageRoute(
// builder: (context) => DiseaseDetails(
// disease: diseaseList[index],
// )),
// );
// },
// trailing: IconButton(
// icon: const Icon(Icons.view_headline_sharp),
// // onPressed: () => {_deleteNote((notes[index].id).toString())},
// onPressed: () => {
// Navigator.of(context).push(
// MaterialPageRoute(
// builder: (context) => OnBoarding()),
// )
// }),
// ),
// ),
),
),
),
)
)
,
]
,
)
,
)
)
;
]
,
}
,
),
),
),
),
),
),
);
),
}),
]),
),
),
// floatingActionButton: FloatingActionButton(
// onPressed: () => Navigator.of(context).push(MaterialPageRoute(
// builder: (context) => CreatePage(
// client: client,
// ))),
// tooltip: 'Increment',
// child: const Icon(Icons.add),
// ), // This trailing comma makes auto-formatting nicer for build methods.
);
);
}
}
void
_showTestDialog
(
BuildContext
context
,
String
diseaseName
,
List
<
DiseaseDescriptionPoint
>
diseaseDescriptionsList
,
Disease
diseaseList
)
{
showDialog
(
context:
context
,
barrierDismissible:
false
,
//context: _scaffoldKey.currentContext,
builder:
(
context
)
{
return
AlertDialog
(
backgroundColor:
Colors
.
blue
[
100
],
elevation:
50.0
,
contentPadding:
EdgeInsets
.
only
(
left:
25
,
right:
25
),
title:
Center
(
child:
Text
(
"About "
+
diseaseName
)),
shape:
RoundedRectangleBorder
(
borderRadius:
BorderRadius
.
all
(
Radius
.
circular
(
20.0
))),
content:
Container
(
height:
440
,
width:
600
,
child:
Column
(
crossAxisAlignment:
CrossAxisAlignment
.
stretch
,
children:
<
Widget
>[
Expanded
(
child:
Container
(
margin:
EdgeInsets
.
only
(
top:
10.0
),
child:
SizedBox
(
height:
200
,
child:
RawScrollbar
(
thumbColor:
Colors
.
redAccent
,
radius:
Radius
.
circular
(
20
),
thickness:
10
,
child:
ListView
.
builder
(
itemCount:
diseaseDescriptionsList
.
length
,
itemBuilder:
(
BuildContext
context
,
int
index
)
{
return
AnimationConfiguration
.
staggeredGrid
(
columnCount:
diseaseDescriptionsList
.
length
,
position:
index
,
child:
SlideAnimation
(
child:
FadeInAnimation
(
child:
Container
(
decoration:
BoxDecoration
(
borderRadius:
BorderRadius
.
circular
(
16
),
color:
Colors
.
blue
,
),
margin:
EdgeInsets
.
only
(
top:
5.0
),
child:
Card
(
elevation:
5.0
,
child:
ListTile
(
title:
Text
(
diseaseDescriptionsList
[
index
]
.
descriptionPoint
,
style:
GoogleFonts
.
lato
(
textStyle:
const
TextStyle
(
fontSize:
18
,
fontWeight:
FontWeight
.
bold
,
),
),
),
),
),
),
),
),
);
}),
),
),
),
),
],
),
),
actions:
<
Widget
>[
Row
(
mainAxisAlignment:
MainAxisAlignment
.
center
,
children:
<
Widget
>[
Container
(
width:
MediaQuery
.
of
(
context
).
size
.
width
*
0.20
,
margin:
EdgeInsets
.
only
(
left:
MediaQuery
.
of
(
context
).
size
.
width
*
0.1
),
child:
RaisedButton
(
child:
Text
(
'More...'
,
style:
TextStyle
(
color:
Colors
.
white
),
),
color:
Color
(
0xFF32CD32
),
shape:
RoundedRectangleBorder
(
borderRadius:
BorderRadius
.
circular
(
30.0
),
),
onPressed:
()
{
Navigator
.
of
(
context
).
push
(
MaterialPageRoute
(
builder:
(
context
)
=>
DiseaseDetails
(
disease:
diseaseList
,
)),
);
},
),
),
SizedBox
(
width:
MediaQuery
.
of
(
context
).
size
.
width
*
0.1
,
),
Padding
(
padding:
const
EdgeInsets
.
only
(
right:
40.0
),
child:
Container
(
width:
MediaQuery
.
of
(
context
).
size
.
width
*
0.20
,
child:
RaisedButton
(
child:
new
Text
(
'Close'
,
style:
TextStyle
(
color:
Colors
.
white
),
),
color:
Color
(
0xFFFF0000
),
shape:
new
RoundedRectangleBorder
(
borderRadius:
new
BorderRadius
.
circular
(
30.0
),
),
onPressed:
()
{
Navigator
.
of
(
context
).
pop
();
},
),
),
),
SizedBox
(
height:
MediaQuery
.
of
(
context
).
size
.
height
*
0.02
,
),
],
)
],
);
});
}
}
}
lib/screens/home_screen.dart
View file @
43228676
import
'package:canis_care/models/component.dart'
;
import
'package:canis_care/models/component.dart'
;
import
'package:canis_care/screens/disease_intelligence.dart'
;
import
'package:canis_care/screens/disease_intelligence
_screen
.dart'
;
import
'package:flutter/material.dart'
;
import
'package:flutter/material.dart'
;
import
'package:google_fonts/google_fonts.dart'
;
import
'package:google_fonts/google_fonts.dart'
;
...
@@ -18,12 +18,6 @@ class _HomePageState extends State<HomePage> {
...
@@ -18,12 +18,6 @@ class _HomePageState extends State<HomePage> {
Widget
build
(
BuildContext
context
)
{
Widget
build
(
BuildContext
context
)
{
return
Scaffold
(
return
Scaffold
(
drawer:
SideDrawer
(),
drawer:
SideDrawer
(),
appBar:
AppBar
(
title:
const
Text
(
"Home Page"
,
textAlign:
TextAlign
.
center
,
),
),
body:
Container
(
body:
Container
(
color:
Colors
.
blue
[
100
],
color:
Colors
.
blue
[
100
],
alignment:
Alignment
.
center
,
alignment:
Alignment
.
center
,
...
@@ -37,7 +31,7 @@ class _HomePageState extends State<HomePage> {
...
@@ -37,7 +31,7 @@ class _HomePageState extends State<HomePage> {
child:
Stack
(
child:
Stack
(
children:
[
children:
[
Container
(
Container
(
height:
2
50
,
height:
3
50
,
decoration:
const
BoxDecoration
(
decoration:
const
BoxDecoration
(
image:
DecorationImage
(
image:
DecorationImage
(
image:
AssetImage
(
image:
AssetImage
(
...
@@ -102,14 +96,14 @@ class _HomePageState extends State<HomePage> {
...
@@ -102,14 +96,14 @@ class _HomePageState extends State<HomePage> {
padding:
const
EdgeInsets
.
all
(
16
),
padding:
const
EdgeInsets
.
all
(
16
),
crossAxisSpacing:
5
,
crossAxisSpacing:
5
,
mainAxisSpacing:
5
,
mainAxisSpacing:
5
,
maxCrossAxisExtent:
2
5
0.0
,
maxCrossAxisExtent:
2
8
0.0
,
children:
[
children:
[
GestureDetector
(
GestureDetector
(
child:
Container
(
child:
Container
(
padding:
const
EdgeInsets
.
only
(
padding:
const
EdgeInsets
.
only
(
top:
10
,
left:
10
,
right:
10
,
bottom:
10
),
top:
10
,
left:
10
,
right:
10
,
bottom:
10
),
child:
ClipRRect
(
child:
ClipRRect
(
borderRadius:
BorderRadius
.
circular
(
6
0
),
borderRadius:
BorderRadius
.
circular
(
4
0
),
child:
Container
(
child:
Container
(
decoration:
BoxDecoration
(
decoration:
BoxDecoration
(
color:
Colors
.
blueAccent
.
withOpacity
(
0.6
)),
color:
Colors
.
blueAccent
.
withOpacity
(
0.6
)),
...
@@ -143,7 +137,7 @@ class _HomePageState extends State<HomePage> {
...
@@ -143,7 +137,7 @@ class _HomePageState extends State<HomePage> {
padding:
const
EdgeInsets
.
only
(
padding:
const
EdgeInsets
.
only
(
top:
10
,
left:
10
,
right:
10
,
bottom:
10
),
top:
10
,
left:
10
,
right:
10
,
bottom:
10
),
child:
ClipRRect
(
child:
ClipRRect
(
borderRadius:
BorderRadius
.
circular
(
6
0
),
borderRadius:
BorderRadius
.
circular
(
4
0
),
child:
Container
(
child:
Container
(
decoration:
BoxDecoration
(
decoration:
BoxDecoration
(
color:
Colors
.
blueAccent
.
withOpacity
(
0.6
)),
color:
Colors
.
blueAccent
.
withOpacity
(
0.6
)),
...
@@ -183,7 +177,7 @@ class _HomePageState extends State<HomePage> {
...
@@ -183,7 +177,7 @@ class _HomePageState extends State<HomePage> {
padding:
const
EdgeInsets
.
only
(
padding:
const
EdgeInsets
.
only
(
top:
10
,
left:
10
,
right:
10
,
bottom:
10
),
top:
10
,
left:
10
,
right:
10
,
bottom:
10
),
child:
ClipRRect
(
child:
ClipRRect
(
borderRadius:
BorderRadius
.
circular
(
6
0
),
borderRadius:
BorderRadius
.
circular
(
4
0
),
child:
Container
(
child:
Container
(
decoration:
BoxDecoration
(
decoration:
BoxDecoration
(
color:
Colors
.
blueAccent
.
withOpacity
(
0.6
)),
color:
Colors
.
blueAccent
.
withOpacity
(
0.6
)),
...
@@ -217,7 +211,7 @@ class _HomePageState extends State<HomePage> {
...
@@ -217,7 +211,7 @@ class _HomePageState extends State<HomePage> {
padding:
const
EdgeInsets
.
only
(
padding:
const
EdgeInsets
.
only
(
top:
10
,
left:
10
,
right:
10
,
bottom:
10
),
top:
10
,
left:
10
,
right:
10
,
bottom:
10
),
child:
ClipRRect
(
child:
ClipRRect
(
borderRadius:
BorderRadius
.
circular
(
6
0
),
borderRadius:
BorderRadius
.
circular
(
4
0
),
child:
Container
(
child:
Container
(
decoration:
BoxDecoration
(
decoration:
BoxDecoration
(
color:
Colors
.
blueAccent
.
withOpacity
(
0.6
)),
color:
Colors
.
blueAccent
.
withOpacity
(
0.6
)),
...
...
lib/screens/welcome_screen.dart
View file @
43228676
...
@@ -29,13 +29,12 @@ class WelcomeScreen extends StatelessWidget {
...
@@ -29,13 +29,12 @@ class WelcomeScreen extends StatelessWidget {
crossAxisAlignment:
CrossAxisAlignment
.
stretch
,
crossAxisAlignment:
CrossAxisAlignment
.
stretch
,
children:
[
children:
[
Center
(
Center
(
child:
ClipOval
(
child:
CircleAvatar
(
child:
Container
(
backgroundColor:
Colors
.
cyan
,
width:
180
,
radius:
80.0
,
height:
180
,
child:
CircleAvatar
(
color:
Colors
.
transparent
,
radius:
70.0
,
alignment:
Alignment
.
center
,
child:
ClipOval
(
child:
Image
.
asset
(
"images/logo1.png"
)),
child:
Image
.
asset
(
"images/logo1.png"
),
),
),
),
),
),
),
...
...
lib/widgets/bottom_nav_bar.dart
0 → 100644
View file @
43228676
import
'package:flutter/material.dart'
;
class
BotBar
extends
StatelessWidget
{
const
BotBar
({
Key
?
key
})
:
super
(
key:
key
);
@override
Widget
build
(
BuildContext
context
)
{
return
Container
(
decoration:
BoxDecoration
(
color:
Colors
.
blue
[
100
],
boxShadow:
[
BoxShadow
(
blurRadius:
20
,
color:
Colors
.
black
.
withOpacity
(
0.2
),
offset:
Offset
.
zero
)
]),
height:
60
,
padding:
const
EdgeInsets
.
only
(
bottom:
5.0
),
child:
Row
(
mainAxisAlignment:
MainAxisAlignment
.
spaceAround
,
children:
[
ClipOval
(
child:
Material
(
child:
IconButton
(
icon:
const
Icon
(
Icons
.
home
,
size:
30
,
color:
Colors
.
blue
,
),
onPressed:
()
{},
),
),
),
ClipOval
(
child:
Material
(
child:
IconButton
(
icon:
const
Icon
(
Icons
.
add_a_photo
,
size:
30
,
color:
Colors
.
blue
,
),
onPressed:
()
{},
),
),
),
ClipOval
(
child:
Material
(
child:
IconButton
(
icon:
const
Icon
(
Icons
.
account_circle
,
size:
30
,
color:
Colors
.
blue
,
),
onPressed:
()
{},
),
),
),
ClipOval
(
child:
Material
(
child:
IconButton
(
icon:
const
Icon
(
Icons
.
ac_unit_rounded
,
size:
30
,
color:
Colors
.
blue
,
),
onPressed:
()
{},
),
),
),
],
),
);
}
}
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