Toggle navigation
Toggle navigation
This project
Loading...
Sign in
2021-1-capstone-design1
/
RIT_Project1
Go to a project
Toggle navigation
Toggle navigation pinning
Projects
Groups
Snippets
Help
Project
Activity
Repository
Pipelines
Graphs
Issues
1
Merge Requests
0
Wiki
Snippets
Network
Create a new issue
Builds
Commits
Issue Boards
Authored by
고원빈
2021-05-24 23:54:13 +0900
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
be50621b661c651a63a7a28a9d4b807067dc7e98
be50621b
1 parent
d290ec8c
[frontend] DashBoard 1차 작업 완료
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
278 additions
and
145 deletions
frontend/README.md
frontend/flutter_application_1/lib/src/screens/DashBoard.dart
frontend/flutter_application_1/lib/src/screens/Register/BottleList.dart
frontend/flutter_application_1/lib/src/screens/Register/DetailMedicine.dart
frontend/flutter_application_1/lib/src/screens/Register/HubList.dart
frontend/flutter_application_1/lib/src/screens/Register/RegisterBottle.dart
frontend/flutter_application_1/lib/src/screens/Register/SearchMedicine.dart
frontend/flutter_application_1/lib/src/screens/Register/SignUpLocal.dart
frontend/flutter_application_1/pubspec.lock
frontend/flutter_application_1/pubspec.yaml
frontend/README.md
View file @
be50621
...
...
@@ -70,7 +70,15 @@ appbar 관련 디자인은 추후 구현 예정
### 2021-05-22
+
약병 검색 기능 구현 중
### 2021-0523
### 2021-05
-
23
+
로그인 하여 메인페이지 과정 구현 완료
+
폴더 정리
### 2021-05-24
회원 가입 --> 허브 등록 --> 약병 등록 -->로그인 페이지로
로그인 --> 허브 리스트 --> 약병 리스트 --> 메인 페이지
+
시나리오 수정 완료
+
메인 페이지 데이터 출력 완료
...
...
frontend/flutter_application_1/lib/src/screens/DashBoard.dart
View file @
be50621
import
'package:flutter/material.dart'
;
import
'package:Smart_Medicine_Box/src/screens/SettingPage.dart'
;
import
'dart:convert'
;
import
'package:shared_preferences/shared_preferences.dart'
;
import
'package:http/http.dart'
as
http
;
import
'package:flutter_dotenv/flutter_dotenv.dart'
;
import
'models/Bottle.dart'
;
import
'models/Medicine.dart'
;
import
'package:Smart_Medicine_Box/src/screens/SettingPage.dart'
;
class
DashBoard
extends
StatefulWidget
{
int
pageNumber
;
int
bottleID
;
DashBoard
({
Key
key
,
this
.
pageNumber
,
this
.
bottleID
})
:
super
(
key:
key
);
Bottle
bottleInformation
;
Medicine
medicineInformation
;
DashBoard
(
{
Key
key
,
this
.
pageNumber
,
this
.
bottleInformation
,
this
.
medicineInformation
})
:
super
(
key:
key
);
@override
_DashBoardState
createState
()
=>
_DashBoardState
();
}
class
_DashBoardState
extends
State
<
DashBoard
>
{
Bottle
_bottleinformation
=
new
Bottle
();
int
_selectedIndex
=
0
;
Medicine
_medicineInformation
=
new
Medicine
();
Widget
build
(
BuildContext
context
)
{
_selectedIndex
=
widget
.
pageNumber
;
_medicineInformation
=
widget
.
medicineInformation
;
_bottleinformation
=
widget
.
bottleInformation
;
var
_tabs
=
[
ineerInformationpage
(
context
),
mainpage
(
context
),
outerInformationpage
(
context
),
ineerInformationpage
(
context
,
_bottleinformation
),
mainpage
(
context
,
_medicineInformation
),
outerInformationpage
(
context
,
_bottleinformation
),
];
return
Scaffold
(
...
...
@@ -112,7 +124,7 @@ class _DashBoardState extends State<DashBoard> {
}
}
Widget
mainpage
(
BuildContext
context
)
{
Widget
mainpage
(
BuildContext
context
,
Medicine
medicineInformation
)
{
Future
<
String
>
getHubList
()
async
{
SharedPreferences
prefs
=
await
SharedPreferences
.
getInstance
();
...
...
@@ -122,117 +134,165 @@ Widget mainpage(BuildContext context) {
print
(
response
.
statusCode
);
}
//현재 접속 중인 허브 리스트 id와 약병 리스트 id 출력
//약 상세 정보 가져오기 --> 이건 Detail Medicine에서 가져 오면 됨
final
Size
size
=
MediaQuery
.
of
(
context
).
size
;
/*
Main 화면
약의 정보를 가져와서 출력을 하는 곳
유저 이메일
약 이름
약 제조사
*/
return
Scaffold
(
backgroundColor:
Colors
.
white
,
body:
Container
(
height:
size
.
height
*
0.6
,
margin:
EdgeInsets
.
fromLTRB
(
0
,
30
,
0
,
0
),
padding:
EdgeInsets
.
fromLTRB
(
5
,
0
,
5
,
5
),
child:
Column
(
crossAxisAlignment:
CrossAxisAlignment
.
center
,
children:
<
Widget
>[
Container
(
padding:
EdgeInsets
.
fromLTRB
(
5
,
0
,
5
,
5
),
margin:
EdgeInsets
.
fromLTRB
(
0
,
30
,
0
,
0
),
height:
size
.
height
*
0.15
,
width:
size
.
width
,
decoration:
BoxDecoration
(
border:
Border
.
all
(),
borderRadius:
BorderRadius
.
all
(
Radius
.
circular
(
4.0
)
// <--- border radius here
body:
SingleChildScrollView
(
child:
Container
(
margin:
EdgeInsets
.
fromLTRB
(
0
,
30
,
0
,
0
),
padding:
EdgeInsets
.
fromLTRB
(
5
,
0
,
5
,
5
),
child:
Column
(
crossAxisAlignment:
CrossAxisAlignment
.
center
,
children:
<
Widget
>[
SizedBox
(
height:
20
),
Container
(
width:
size
.
width
,
padding:
EdgeInsets
.
fromLTRB
(
5
,
0
,
5
,
5
),
margin:
EdgeInsets
.
all
(
15
),
decoration:
BoxDecoration
(
border:
Border
.
all
(),
borderRadius:
BorderRadius
.
all
(
Radius
.
circular
(
25.0
)
// <--- border radius here
),
),
child:
Column
(
children:
[
SizedBox
(
height:
30
),
Container
(
child:
Center
(
child:
Text
(
medicineInformation
.
name
==
null
?
'-'
:
medicineInformation
.
name
,
style:
TextStyle
(
color:
Colors
.
black
,
fontSize:
24
,
fontFamily:
'NotoSansKR'
,
fontWeight:
FontWeight
.
w700
)),
),
),
),
child:
new
Column
(
crossAxisAlignment:
CrossAxisAlignment
.
start
,
children:
[
Text
(
'약 이름:'
,
style:
TextStyle
(
color:
Colors
.
black
,
fontSize:
24
,
fontFamily:
'NotoSansKR'
,
fontWeight:
FontWeight
.
w700
),
),
Text
(
'무슨 무슨 비타민 '
,
style:
TextStyle
(
color:
Colors
.
black
,
fontSize:
36
,
fontFamily:
'NotoSansKR'
,
fontWeight:
FontWeight
.
w700
),
),
],
),
),
Container
(
padding:
EdgeInsets
.
fromLTRB
(
5
,
0
,
5
,
5
),
margin:
EdgeInsets
.
fromLTRB
(
0
,
30
,
0
,
0
),
height:
size
.
height
*
0.15
,
width:
size
.
width
,
decoration:
BoxDecoration
(
border:
Border
.
all
(),
borderRadius:
BorderRadius
.
all
(
Radius
.
circular
(
4.0
)
// <--- border radius here
SizedBox
(
height:
30
),
Container
(
width:
size
.
width
,
alignment:
Alignment
(
0.9
,
0
),
child:
Wrap
(
children:
[
Text
(
'제조사: '
,
style:
TextStyle
(
color:
Colors
.
grey
,
fontSize:
14
,
),
),
Text
(
medicineInformation
.
company
==
null
?
'-'
:
medicineInformation
.
company
,
style:
TextStyle
(
color:
Colors
.
grey
,
fontSize:
14
,
),
),
],
),
),
),
child:
new
Column
(
crossAxisAlignment:
CrossAxisAlignment
.
start
,
children:
[
Text
(
'약 제조사:'
,
style:
TextStyle
(
color:
Colors
.
black
,
fontSize:
24
,
fontFamily:
'NotoSansKR'
,
fontWeight:
FontWeight
.
w700
),
),
Text
(
'Test123'
,
style:
TextStyle
(
color:
Colors
.
black
,
fontSize:
32
,
fontFamily:
'NotoSansKR'
,
fontWeight:
FontWeight
.
w700
),
),
],
),
),
Container
(
height:
80
,
padding:
const
EdgeInsets
.
fromLTRB
(
20
,
20
,
20
,
20
),
child:
RaisedButton
(
onPressed:
()
async
{
String
saveMessage
=
await
getHubList
();
},
shape:
RoundedRectangleBorder
(
borderRadius:
new
BorderRadius
.
circular
(
18.0
),
side:
BorderSide
(
color:
Colors
.
blue
)),
color:
Color
(
0xff1674f6
),
child:
Text
(
'회원 가입'
,
textScaleFactor:
1.0
,
style:
TextStyle
(
fontSize:
16
,
color:
Colors
.
white
,
fontWeight:
FontWeight
.
bold
),
SizedBox
(
height:
30
),
Container
(
width:
size
.
width
,
padding:
EdgeInsets
.
fromLTRB
(
5
,
0
,
5
,
0
),
alignment:
Alignment
(-
1
,
0
),
child:
Wrap
(
children:
[
Text
(
'타겟 층 : '
,
style:
TextStyle
(
color:
Colors
.
grey
,
fontSize:
14
,
),
),
Text
(
medicineInformation
.
target
==
null
?
'-'
:
medicineInformation
.
target
,
style:
TextStyle
(
color:
Colors
.
grey
,
fontSize:
14
,
),
),
],
),
),
SizedBox
(
height:
15
),
Container
(
width:
size
.
width
,
padding:
EdgeInsets
.
fromLTRB
(
5
,
0
,
5
,
0
),
alignment:
Alignment
(-
1
,
0
),
child:
Wrap
(
children:
[
Text
(
'복약 정보 : '
,
style:
TextStyle
(
color:
Colors
.
grey
,
fontSize:
14
,
),
),
Text
(
medicineInformation
.
dosage
==
null
?
'-'
:
medicineInformation
.
dosage
,
style:
TextStyle
(
color:
Colors
.
grey
,
fontSize:
14
,
),
),
],
),
),
SizedBox
(
height:
10
),
Container
(
width:
size
.
width
,
padding:
EdgeInsets
.
fromLTRB
(
5
,
10
,
5
,
10
),
alignment:
Alignment
(-
1
,
0
),
child:
Column
(
children:
[
SizedBox
(
height:
12
,
),
Container
(
width:
size
.
width
,
child:
Text
(
'경고'
,
style:
TextStyle
(
color:
Colors
.
redAccent
,
fontSize:
14
),
),
),
SizedBox
(
height:
12
),
Container
(
width:
size
.
width
,
child:
Text
(
medicineInformation
.
warn
==
null
?
'-'
:
medicineInformation
.
warn
,
style:
TextStyle
(
color:
Colors
.
redAccent
,
fontSize:
14
),
),
),
],
),
),
],
),
),
)
]
,
],
)
,
),
),
);
}
Widget
ineerInformationpage
(
BuildContext
context
)
{
Widget
ineerInformationpage
(
BuildContext
context
,
Bottle
bottleinformation
)
{
final
Size
size
=
MediaQuery
.
of
(
context
).
size
;
return
Scaffold
(
backgroundColor:
Colors
.
white
,
...
...
@@ -306,7 +366,12 @@ Widget ineerInformationpage(BuildContext context) {
mainAxisAlignment:
MainAxisAlignment
.
center
,
children:
[
Text
(
'14'
,
bottleinformation
.
temperature
.
toString
()
==
null
?
'-'
:
bottleinformation
.
temperature
.
toString
(),
textAlign:
TextAlign
.
center
,
textScaleFactor:
1.0
,
style:
TextStyle
(
...
...
@@ -367,7 +432,11 @@ Widget ineerInformationpage(BuildContext context) {
mainAxisAlignment:
MainAxisAlignment
.
center
,
children:
[
Text
(
'57'
,
bottleinformation
.
humidity
.
toString
()
==
null
?
'-'
:
bottleinformation
.
humidity
.
toString
(),
textAlign:
TextAlign
.
center
,
textScaleFactor:
1.0
,
style:
TextStyle
(
...
...
@@ -445,7 +514,11 @@ Widget ineerInformationpage(BuildContext context) {
mainAxisAlignment:
MainAxisAlignment
.
center
,
children:
[
Text
(
'57'
,
bottleinformation
.
balance
.
toString
()
==
null
?
'-'
:
bottleinformation
.
balance
.
toString
(),
textAlign:
TextAlign
.
center
,
textScaleFactor:
1.0
,
style:
TextStyle
(
...
...
@@ -503,7 +576,9 @@ Widget ineerInformationpage(BuildContext context) {
height:
size
.
height
*
0.14
,
child:
Center
(
child:
Text
(
'15:57'
,
bottleinformation
.
recentOpen
==
null
?
'-'
:
bottleinformation
.
recentOpen
,
textAlign:
TextAlign
.
center
,
textScaleFactor:
1.0
,
style:
TextStyle
(
...
...
@@ -529,7 +604,7 @@ Widget ineerInformationpage(BuildContext context) {
);
}
Widget
outerInformationpage
(
BuildContext
context
)
{
Widget
outerInformationpage
(
BuildContext
context
,
Bottle
bottleinformation
)
{
final
Size
size
=
MediaQuery
.
of
(
context
).
size
;
return
Scaffold
(
backgroundColor:
Colors
.
white
,
...
...
@@ -601,7 +676,9 @@ Widget outerInformationpage(BuildContext context) {
mainAxisAlignment:
MainAxisAlignment
.
center
,
children:
[
Text
(
'2'
,
bottleinformation
.
toString
()
==
null
?
'-'
:
bottleinformation
.
toString
(),
textAlign:
TextAlign
.
center
,
textScaleFactor:
1.0
,
style:
TextStyle
(
...
...
frontend/flutter_application_1/lib/src/screens/Register/BottleList.dart
View file @
be50621
...
...
@@ -5,18 +5,46 @@ import 'package:http/http.dart' as http;
import
'package:flutter_dotenv/flutter_dotenv.dart'
;
import
'../models/Bottle.dart'
;
import
'../DashBoard.dart'
;
import
'../models/Medicine.dart'
;
class
BottleList
extends
StatefulWidget
{
List
<
Bottle
>
bottlelist
;
BottleList
({
Key
key
,
this
.
bottlelist
})
:
super
(
key:
key
);
String
hubid
;
BottleList
({
Key
key
,
this
.
bottlelist
,
this
.
hubid
})
:
super
(
key:
key
);
@override
_BottleListState
createState
()
=>
_BottleListState
();
}
class
_BottleListState
extends
State
<
BottleList
>
{
Bottle
_bottleinformation
=
new
Bottle
();
Medicine
_medicineinformation
=
new
Medicine
();
Future
<
Bottle
>
getbottle
(
int
index
)
async
{
http
.
Response
response
=
await
http
.
get
(
Uri
.
encodeFull
(
DotEnv
().
env
[
'SERVER_URL'
]
+
'bottle/'
+
widget
.
bottlelist
[
index
].
bottleId
.
toString
()));
if
(
response
.
statusCode
==
200
)
{
Map
<
String
,
dynamic
>
jsonData
=
jsonDecode
(
response
.
body
);
print
(
jsonData
);
_bottleinformation
=
Bottle
.
fromJson
(
jsonData
);
}
}
Future
<
Bottle
>
getmedicine
(
int
index
)
async
{
http
.
Response
medicineresponse
=
await
http
.
get
(
Uri
.
encodeFull
(
DotEnv
().
env
[
'SERVER_URL'
]
+
'medicine/'
+
widget
.
bottlelist
[
index
].
medicineId
.
toString
()));
if
(
medicineresponse
.
statusCode
==
200
)
{
Map
<
String
,
dynamic
>
data
=
jsonDecode
(
medicineresponse
.
body
);
_medicineinformation
=
Medicine
.
fromJson
(
data
);
}
}
Widget
build
(
BuildContext
context
)
{
print
(
widget
.
bottlelist
);
final
Size
size
=
MediaQuery
.
of
(
context
).
size
;
return
Scaffold
(
body:
Container
(
...
...
@@ -62,13 +90,19 @@ class _BottleListState extends State<BottleList> {
fontWeight:
FontWeight
.
bold
),
),
trailing:
Icon
(
Icons
.
arrow_forward
),
onTap:
()
{
onTap:
()
async
{
getbottle
(
index
);
getmedicine
(
index
);
print
(
_bottleinformation
);
print
(
_medicineinformation
);
Navigator
.
push
(
context
,
MaterialPageRoute
(
builder:
(
BuildContext
context
)
=>
DashBoard
(
pageNumber:
1
,
bottleID:
widget
.
bottlelist
[
index
].
bottleId
,
bottleInformation:
_bottleinformation
,
medicineInformation:
_medicineinformation
,
),
));
}),
...
...
frontend/flutter_application_1/lib/src/screens/Register/DetailMedicine.dart
View file @
be50621
import
'package:Smart_Medicine_Box/src/screens/DashBoard.dart'
;
import
'package:Smart_Medicine_Box/src/screens/Homepage.dart'
;
import
'package:flutter/material.dart'
;
import
'package:flutter/cupertino.dart'
;
import
'dart:convert'
;
...
...
@@ -28,7 +29,6 @@ class _DetailMedicineState extends State<DetailMedicine> {
'dosage'
:
medicineDosageController
.
text
}));
print
(
response
.
statusCode
);
if
(
response
.
statusCode
==
200
)
{
return
"Complete"
;
}
else
if
(
response
.
statusCode
==
404
)
{
...
...
@@ -207,14 +207,12 @@ class _DetailMedicineState extends State<DetailMedicine> {
child:
new
Text
(
'Close'
),
onPressed:
()
{
Navigator
.
push
(
context
,
MaterialPageRoute
(
builder:
(
BuildContext
context
)
=>
DashBoard
(
pageNumber:
1
,
bottleID:
int
.
parse
(
widget
.
bottleId
),
)));
context
,
MaterialPageRoute
(
builder:
(
BuildContext
context
)
=>
HomePage
(),
),
);
})
],
);
...
...
frontend/flutter_application_1/lib/src/screens/Register/HubList.dart
View file @
be50621
...
...
@@ -94,8 +94,9 @@ class _HubListState extends State<HubList> {
MaterialPageRoute
(
builder:
(
BuildContext
context
)
=>
BottleList
(
bottlelist:
_bottleList
,
),
bottlelist:
_bottleList
,
hubid:
widget
.
hublist
[
index
]
.
toString
()),
));
}
else
if
(
result
==
"Not Found"
)
{
showDialog
(
...
...
frontend/flutter_application_1/lib/src/screens/Register/RegisterBottle.dart
View file @
be50621
...
...
@@ -110,18 +110,19 @@ class _RegisterBottleState extends State<RegisterBottle> {
content:
new
Text
(
'약병 등록이 완료 되었습니다.'
),
actions:
<
Widget
>[
new
FlatButton
(
child:
new
Text
(
'Close'
),
onPressed:
()
{
Navigator
.
push
(
context
,
MaterialPageRoute
(
builder:
(
BuildContext
context
)
=>
SearchMedicine
(
bottleId:
medicineBottleIDController
.
text
,
)));
})
child:
new
Text
(
'Close'
),
onPressed:
()
{
Navigator
.
push
(
context
,
MaterialPageRoute
(
builder:
(
BuildContext
context
)
=>
SearchMedicine
(
bottleId:
medicineBottleIDController
.
text
,
),
),
);
},
),
],
);
});
...
...
frontend/flutter_application_1/lib/src/screens/Register/SearchMedicine.dart
View file @
be50621
...
...
@@ -8,7 +8,6 @@ import 'DetailMedicine.dart';
class
SearchMedicine
extends
StatefulWidget
{
String
bottleId
;
SearchMedicine
({
Key
key
,
this
.
bottleId
})
:
super
(
key:
key
);
@override
_SearchMedicineState
createState
()
=>
_SearchMedicineState
();
...
...
frontend/flutter_application_1/lib/src/screens/Register/SignUpLocal.dart
View file @
be50621
...
...
@@ -3,7 +3,7 @@ import 'package:flutter/material.dart';
import
'package:http/http.dart'
as
http
;
import
'package:flutter_dotenv/flutter_dotenv.dart'
;
import
'
../Homepage
.dart'
;
import
'
RegsiterHub
.dart'
;
class
SignUpLocal
extends
StatefulWidget
{
@override
...
...
@@ -182,7 +182,7 @@ class _SignUpLocalState extends State<SignUpLocal> {
context
,
MaterialPageRoute
(
builder:
(
BuildContext
context
)
=>
HomePage
()));
RegisterHub
()));
})
],
);
...
...
frontend/flutter_application_1/pubspec.lock
View file @
be50621
...
...
@@ -156,6 +156,13 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "3.1.4"
infinite_listview:
dependency: transitive
description:
name: infinite_listview
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.1+1"
intl:
dependency: "direct main"
description:
...
...
@@ -198,6 +205,13 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "0.9.7"
numberpicker:
dependency: "direct main"
description:
name: numberpicker
url: "https://pub.dartlang.org"
source: hosted
version: "1.3.0"
page_transition:
dependency: "direct main"
description:
...
...
frontend/flutter_application_1/pubspec.yaml
View file @
be50621
...
...
@@ -37,6 +37,7 @@ dependencies:
cupertino_icons
:
^0.1.3
http
:
^0.12.0+4
flutter_dotenv
:
^2.1.0
numberpicker
:
^1.3.0
dev_dependencies
:
flutter_test
:
...
...
Please
register
or
login
to post a comment