Showing
8 changed files
with
236 additions
and
19 deletions
| ... | @@ -16,6 +16,7 @@ class BottleList extends StatefulWidget { | ... | @@ -16,6 +16,7 @@ class BottleList extends StatefulWidget { |
| 16 | 16 | ||
| 17 | class _BottleListState extends State<BottleList> { | 17 | class _BottleListState extends State<BottleList> { |
| 18 | Widget build(BuildContext context) { | 18 | Widget build(BuildContext context) { |
| 19 | + print(widget.bottlelist); | ||
| 19 | final Size size = MediaQuery.of(context).size; | 20 | final Size size = MediaQuery.of(context).size; |
| 20 | return Scaffold( | 21 | return Scaffold( |
| 21 | body: Container( | 22 | body: Container( | ... | ... |
| ... | @@ -5,6 +5,8 @@ import 'package:flutter/material.dart'; | ... | @@ -5,6 +5,8 @@ import 'package:flutter/material.dart'; |
| 5 | import 'package:http/http.dart' as http; | 5 | import 'package:http/http.dart' as http; |
| 6 | import 'package:flutter_dotenv/flutter_dotenv.dart'; | 6 | import 'package:flutter_dotenv/flutter_dotenv.dart'; |
| 7 | 7 | ||
| 8 | +import 'SearchMedicine.dart'; | ||
| 9 | + | ||
| 8 | class RegisterBottle extends StatefulWidget { | 10 | class RegisterBottle extends StatefulWidget { |
| 9 | final String hubid; | 11 | final String hubid; |
| 10 | RegisterBottle({Key key, this.hubid}) : super(key: key); | 12 | RegisterBottle({Key key, this.hubid}) : super(key: key); |
| ... | @@ -117,9 +119,7 @@ class _RegisterBottleState extends State<RegisterBottle> { | ... | @@ -117,9 +119,7 @@ class _RegisterBottleState extends State<RegisterBottle> { |
| 117 | context, | 119 | context, |
| 118 | MaterialPageRoute( | 120 | MaterialPageRoute( |
| 119 | builder: (BuildContext context) => | 121 | builder: (BuildContext context) => |
| 120 | - DashBoard( | 122 | + SearchMedicine())); |
| 121 | - pageNumber: 1, | ||
| 122 | - ))); | ||
| 123 | }) | 123 | }) |
| 124 | ], | 124 | ], |
| 125 | ); | 125 | ); |
| ... | @@ -129,19 +129,13 @@ class _RegisterBottleState extends State<RegisterBottle> { | ... | @@ -129,19 +129,13 @@ class _RegisterBottleState extends State<RegisterBottle> { |
| 129 | context: context, | 129 | context: context, |
| 130 | builder: (BuildContext context) { | 130 | builder: (BuildContext context) { |
| 131 | return AlertDialog( | 131 | return AlertDialog( |
| 132 | - title: new Text('약병 등록'), | 132 | + title: new Text('오류'), |
| 133 | content: new Text(saveMessage), | 133 | content: new Text(saveMessage), |
| 134 | actions: <Widget>[ | 134 | actions: <Widget>[ |
| 135 | new FlatButton( | 135 | new FlatButton( |
| 136 | child: new Text('Close'), | 136 | child: new Text('Close'), |
| 137 | onPressed: () { | 137 | onPressed: () { |
| 138 | - Navigator.push( | 138 | + Navigator.of(context).pop(); |
| 139 | - context, | ||
| 140 | - MaterialPageRoute( | ||
| 141 | - builder: (BuildContext context) => | ||
| 142 | - DashBoard( | ||
| 143 | - pageNumber: 1, | ||
| 144 | - ))); | ||
| 145 | }) | 139 | }) |
| 146 | ], | 140 | ], |
| 147 | ); | 141 | ); | ... | ... |
| ... | @@ -50,7 +50,7 @@ class _RegisterHubState extends State<RegisterHub> { | ... | @@ -50,7 +50,7 @@ class _RegisterHubState extends State<RegisterHub> { |
| 50 | child: Row( | 50 | child: Row( |
| 51 | children: <Widget>[ | 51 | children: <Widget>[ |
| 52 | Text( | 52 | Text( |
| 53 | - '약병 등록', | 53 | + '허브 등록', |
| 54 | textScaleFactor: 1.0, | 54 | textScaleFactor: 1.0, |
| 55 | style: TextStyle(fontSize: 34), | 55 | style: TextStyle(fontSize: 34), |
| 56 | ) | 56 | ) |
| ... | @@ -62,7 +62,7 @@ class _RegisterHubState extends State<RegisterHub> { | ... | @@ -62,7 +62,7 @@ class _RegisterHubState extends State<RegisterHub> { |
| 62 | child: Row( | 62 | child: Row( |
| 63 | children: <Widget>[ | 63 | children: <Widget>[ |
| 64 | Text( | 64 | Text( |
| 65 | - 'SmartMedicine 회원가입', | 65 | + 'SmartMedicine 허브 등록', |
| 66 | textScaleFactor: 1.0, | 66 | textScaleFactor: 1.0, |
| 67 | style: TextStyle(fontSize: 16), | 67 | style: TextStyle(fontSize: 16), |
| 68 | ) | 68 | ) | ... | ... |
| 1 | +import 'dart:convert'; | ||
| 2 | +import 'package:flutter/material.dart'; | ||
| 3 | +import 'package:flutter/services.dart'; | ||
| 4 | +import 'package:http/http.dart' as http; | ||
| 5 | +import 'package:flutter_dotenv/flutter_dotenv.dart'; | ||
| 6 | +import 'models/Bottle.dart'; | ||
| 7 | +import 'DashBoard.dart'; | ||
| 8 | + | ||
| 9 | +class SearchMedicine extends StatefulWidget { | ||
| 10 | + @override | ||
| 11 | + _SearchMedicineState createState() => _SearchMedicineState(); | ||
| 12 | +} | ||
| 13 | + | ||
| 14 | +class _SearchMedicineState extends State<SearchMedicine> { | ||
| 15 | + final medicineNameController = TextEditingController(); | ||
| 16 | + final medicineFactureController = TextEditingController(); | ||
| 17 | + | ||
| 18 | + Widget build(BuildContext context) { | ||
| 19 | + bool isForward = false; | ||
| 20 | + final Size size = MediaQuery.of(context).size; | ||
| 21 | + // int goals = 60; | ||
| 22 | + // int points = 75; | ||
| 23 | + | ||
| 24 | + return Scaffold( | ||
| 25 | + appBar: AppBar( | ||
| 26 | + backgroundColor: Colors.white, | ||
| 27 | + leading: new Icon(Icons.medical_services_rounded, | ||
| 28 | + color: Colors.black, size: 45.0), | ||
| 29 | + title: Text( | ||
| 30 | + 'Smart Medicine Box', | ||
| 31 | + style: TextStyle( | ||
| 32 | + color: Colors.black, | ||
| 33 | + fontSize: 23, | ||
| 34 | + fontFamily: 'Noto', | ||
| 35 | + fontWeight: FontWeight.bold), | ||
| 36 | + ), | ||
| 37 | + ), | ||
| 38 | + body: Container( | ||
| 39 | + height: size.height, | ||
| 40 | + padding: const EdgeInsets.all(10), | ||
| 41 | + decoration: BoxDecoration( | ||
| 42 | + border: Border.all(), | ||
| 43 | + ), | ||
| 44 | + child: Column( | ||
| 45 | + crossAxisAlignment: CrossAxisAlignment.center, | ||
| 46 | + children: <Widget>[ | ||
| 47 | + SizedBox(height: 20), | ||
| 48 | + Container( | ||
| 49 | + height: size.height * 0.13, | ||
| 50 | + decoration: BoxDecoration( | ||
| 51 | + border: Border.all(), | ||
| 52 | + color: Colors.white, | ||
| 53 | + borderRadius: BorderRadius.circular(25), | ||
| 54 | + ), | ||
| 55 | + child: Row( | ||
| 56 | + children: [ | ||
| 57 | + Column( | ||
| 58 | + children: [ | ||
| 59 | + Container( | ||
| 60 | + height: size.height * 0.0635, | ||
| 61 | + width: size.width * 0.75, | ||
| 62 | + child: Row( | ||
| 63 | + children: [ | ||
| 64 | + Container( | ||
| 65 | + width: size.width * 0.16, | ||
| 66 | + padding: const EdgeInsets.fromLTRB(10, 0, 0, 0), | ||
| 67 | + child: Text('약이름:', | ||
| 68 | + textAlign: TextAlign.center, | ||
| 69 | + style: TextStyle( | ||
| 70 | + fontSize: 16, | ||
| 71 | + fontFamily: 'NotoSansKR', | ||
| 72 | + fontWeight: FontWeight.w600)), | ||
| 73 | + ), | ||
| 74 | + Container( | ||
| 75 | + padding: const EdgeInsets.fromLTRB(5, 0, 0, 0), | ||
| 76 | + width: size.width * 0.55, | ||
| 77 | + child: TextFormField( | ||
| 78 | + keyboardType: TextInputType.text, | ||
| 79 | + controller: medicineNameController, | ||
| 80 | + decoration: InputDecoration( | ||
| 81 | + border: InputBorder.none, | ||
| 82 | + focusedBorder: InputBorder.none, | ||
| 83 | + enabledBorder: InputBorder.none, | ||
| 84 | + errorBorder: InputBorder.none, | ||
| 85 | + disabledBorder: InputBorder.none, | ||
| 86 | + hintText: '약 이름을 입력하세요', | ||
| 87 | + ), | ||
| 88 | + style: TextStyle( | ||
| 89 | + fontSize: 16, | ||
| 90 | + fontFamily: 'NotoSansKR', | ||
| 91 | + fontWeight: FontWeight.w600)), | ||
| 92 | + ) | ||
| 93 | + ], | ||
| 94 | + ), | ||
| 95 | + decoration: BoxDecoration( | ||
| 96 | + border: Border( | ||
| 97 | + bottom: BorderSide( | ||
| 98 | + color: Colors.black, | ||
| 99 | + width: 1, | ||
| 100 | + style: BorderStyle.solid), | ||
| 101 | + right: BorderSide( | ||
| 102 | + color: Colors.black, | ||
| 103 | + width: 1, | ||
| 104 | + style: BorderStyle.solid), | ||
| 105 | + ), | ||
| 106 | + ), | ||
| 107 | + ), | ||
| 108 | + Container( | ||
| 109 | + height: size.height * 0.0635, | ||
| 110 | + width: size.width * 0.75, | ||
| 111 | + child: Row( | ||
| 112 | + children: [ | ||
| 113 | + Container( | ||
| 114 | + width: size.width * 0.16, | ||
| 115 | + padding: const EdgeInsets.fromLTRB(5, 0, 0, 3), | ||
| 116 | + child: Text('제조사:', | ||
| 117 | + textAlign: TextAlign.center, | ||
| 118 | + style: TextStyle( | ||
| 119 | + fontSize: 16, | ||
| 120 | + fontFamily: 'NotoSansKR', | ||
| 121 | + fontWeight: FontWeight.w600)), | ||
| 122 | + ), | ||
| 123 | + Container( | ||
| 124 | + padding: const EdgeInsets.fromLTRB(6, 0, 0, 0), | ||
| 125 | + width: size.width * 0.50, | ||
| 126 | + child: TextFormField( | ||
| 127 | + keyboardType: TextInputType.text, | ||
| 128 | + controller: medicineFactureController, | ||
| 129 | + decoration: InputDecoration( | ||
| 130 | + border: InputBorder.none, | ||
| 131 | + focusedBorder: InputBorder.none, | ||
| 132 | + enabledBorder: InputBorder.none, | ||
| 133 | + errorBorder: InputBorder.none, | ||
| 134 | + disabledBorder: InputBorder.none, | ||
| 135 | + hintText: '약 제조사 이름을 입력하세요', | ||
| 136 | + ), | ||
| 137 | + style: TextStyle( | ||
| 138 | + fontSize: 16, | ||
| 139 | + fontFamily: 'NotoSansKR', | ||
| 140 | + fontWeight: FontWeight.w600)), | ||
| 141 | + ) | ||
| 142 | + ], | ||
| 143 | + ), | ||
| 144 | + decoration: BoxDecoration( | ||
| 145 | + border: Border( | ||
| 146 | + right: BorderSide( | ||
| 147 | + color: Colors.black, | ||
| 148 | + width: 1, | ||
| 149 | + style: BorderStyle.solid), | ||
| 150 | + ), | ||
| 151 | + ), | ||
| 152 | + ), | ||
| 153 | + ], | ||
| 154 | + ), | ||
| 155 | + Container( | ||
| 156 | + height: size.height * 0.0635 * 2, | ||
| 157 | + width: size.width * 0.14, | ||
| 158 | + padding: const EdgeInsets.fromLTRB(10, 0, 0, 0), | ||
| 159 | + child: IconButton( | ||
| 160 | + icon: Icon(Icons.search, size: 40), | ||
| 161 | + onPressed: () { | ||
| 162 | + //검색 함수를 여기다가 | ||
| 163 | + }, | ||
| 164 | + ), | ||
| 165 | + ), | ||
| 166 | + ], | ||
| 167 | + ), | ||
| 168 | + ), | ||
| 169 | + SizedBox(height: 20), | ||
| 170 | + Expanded( | ||
| 171 | + child: ListView.separated( | ||
| 172 | + itemBuilder: (BuildContext context, int index) {}, | ||
| 173 | + separatorBuilder: (BuildContext contetx, int index) => | ||
| 174 | + const Divider(), | ||
| 175 | + itemCount: 0)) | ||
| 176 | + ], | ||
| 177 | + ), | ||
| 178 | + ), | ||
| 179 | + ); | ||
| 180 | + } | ||
| 181 | +} |
| ... | @@ -48,14 +48,15 @@ class _SignInPageState extends State<SignInPage> { | ... | @@ -48,14 +48,15 @@ class _SignInPageState extends State<SignInPage> { |
| 48 | await http.get(Uri.encodeFull(DotEnv().env['SERVER_URL'] + 'hub')); | 48 | await http.get(Uri.encodeFull(DotEnv().env['SERVER_URL'] + 'hub')); |
| 49 | 49 | ||
| 50 | List<dynamic> values = new List<dynamic>(); | 50 | List<dynamic> values = new List<dynamic>(); |
| 51 | - values = json.decode(response.body); | 51 | + |
| 52 | if (_hublist.length != 0) { | 52 | if (_hublist.length != 0) { |
| 53 | _hublist.clear(); | 53 | _hublist.clear(); |
| 54 | } | 54 | } |
| 55 | - for (int i = 0; i < values.length; i++) { | ||
| 56 | - _hublist.add(values[i]['hubId']); | ||
| 57 | - } | ||
| 58 | if (response.statusCode == 200) { | 55 | if (response.statusCode == 200) { |
| 56 | + values = json.decode(response.body); | ||
| 57 | + for (int i = 0; i < values.length; i++) { | ||
| 58 | + _hublist.add(values[i]['hubId']); | ||
| 59 | + } | ||
| 59 | return "get완료"; | 60 | return "get완료"; |
| 60 | } else if (response.statusCode == 404) { | 61 | } else if (response.statusCode == 404) { |
| 61 | return "Not Found"; | 62 | return "Not Found"; | ... | ... |
| ... | @@ -19,8 +19,6 @@ class Bottle { | ... | @@ -19,8 +19,6 @@ class Bottle { |
| 19 | this.dosage}); | 19 | this.dosage}); |
| 20 | 20 | ||
| 21 | factory Bottle.fromJson(Map<String, dynamic> parsedJson) { | 21 | factory Bottle.fromJson(Map<String, dynamic> parsedJson) { |
| 22 | - var list = parsedJson['data'] as List; | ||
| 23 | - | ||
| 24 | return Bottle( | 22 | return Bottle( |
| 25 | bottleId: parsedJson['bottleId'], | 23 | bottleId: parsedJson['bottleId'], |
| 26 | temperature: parsedJson['temperature'], | 24 | temperature: parsedJson['temperature'], | ... | ... |
| 1 | +class Medicine { | ||
| 2 | + final int medicineId; | ||
| 3 | + final String antiEffect; | ||
| 4 | + final String company; | ||
| 5 | + final String dosage; | ||
| 6 | + final String name; | ||
| 7 | + final String target; | ||
| 8 | + final String warn; | ||
| 9 | + | ||
| 10 | + Medicine( | ||
| 11 | + {this.medicineId, | ||
| 12 | + this.antiEffect, | ||
| 13 | + this.company, | ||
| 14 | + this.dosage, | ||
| 15 | + this.name, | ||
| 16 | + this.target, | ||
| 17 | + this.warn}); | ||
| 18 | + | ||
| 19 | + factory Medicine.fromJson(Map<String, dynamic> parsedJson) { | ||
| 20 | + return Medicine( | ||
| 21 | + medicineId: parsedJson['medicineId'], | ||
| 22 | + antiEffect: parsedJson['antiEffect'], | ||
| 23 | + company: parsedJson['company'], | ||
| 24 | + dosage: parsedJson['dosage'], | ||
| 25 | + name: parsedJson['name'], | ||
| 26 | + target: parsedJson['target'], | ||
| 27 | + warn: parsedJson['warn'], | ||
| 28 | + ); | ||
| 29 | + } | ||
| 30 | + | ||
| 31 | + Map<String, dynamic> toJson() => { | ||
| 32 | + "medicineId": medicineId, | ||
| 33 | + "antiEffect": antiEffect, | ||
| 34 | + "company": company, | ||
| 35 | + "dosage": dosage, | ||
| 36 | + "name": name, | ||
| 37 | + "target": target, | ||
| 38 | + "warn": warn, | ||
| 39 | + }; | ||
| 40 | +} |
-
Please register or login to post a comment