add hospital dropdown with daynamic value

merge-requests/1/merge
Elham Rababah 6 years ago
parent d080b5e1c4
commit 32dc9012c4

@ -1,9 +1,11 @@
import 'package:doctor_app_flutter/providers/auth_provider.dart'; import 'package:doctor_app_flutter/providers/auth_provider.dart';
import 'package:doctor_app_flutter/providers/patients_provider.dart'; import 'package:doctor_app_flutter/providers/patients_provider.dart';
import 'package:doctor_app_flutter/providers/projects_provider.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:hexcolor/hexcolor.dart'; import 'package:hexcolor/hexcolor.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import './routes.dart'; import './routes.dart';
void main() => runApp(MyApp()); void main() => runApp(MyApp());
class MyApp extends StatelessWidget { class MyApp extends StatelessWidget {
@ -14,7 +16,7 @@ class MyApp extends StatelessWidget {
providers: [ providers: [
ChangeNotifierProvider.value(value: PatientsProvider()), ChangeNotifierProvider.value(value: PatientsProvider()),
ChangeNotifierProvider.value(value: AuthProvider()), ChangeNotifierProvider.value(value: AuthProvider()),
ChangeNotifierProvider.value(value: ProjectsProvider()),
], ],
child: MaterialApp( child: MaterialApp(
title: 'Flutter Demo', title: 'Flutter Demo',

@ -5,16 +5,19 @@ import 'package:http/http.dart' as http;
import '../models/user_model.dart'; import '../models/user_model.dart';
const LOGIN_URL = 'https://hmgwebservices.com/Services/Sentry.svc/REST/MemberLogIN_New'; const LOGIN_URL =
const INSERT_DEVICE_IMEI = 'https://hmgwebservices.com/Services/Sentry.svc/REST/DoctorApplication_INSERTDeviceIMEI'; 'https://hmgwebservices.com/Services/Sentry.svc/REST/MemberLogIN_New';
const INSERT_DEVICE_IMEI =
'https://hmgwebservices.com/Services/Sentry.svc/REST/DoctorApplication_INSERTDeviceIMEI';
class AuthProvider with ChangeNotifier { class AuthProvider with ChangeNotifier {
Future<Map> login(UserModel userInfo) async { Future<Map> login(UserModel userInfo) async {
Map<String, String> requestHeaders = { Map<String, String> requestHeaders = {
'Content-type': 'application/json', 'Content-type': 'application/json',
'Accept': 'application/json', 'Accept': 'application/json',
}; };
const url =LOGIN_URL; const url = LOGIN_URL;
try { try {
final response = await http.post(url, final response = await http.post(url,
headers: requestHeaders, headers: requestHeaders,
@ -31,25 +34,24 @@ class AuthProvider with ChangeNotifier {
return Future.value(json.decode(response.body)); return Future.value(json.decode(response.body));
} catch (error) { } catch (error) {
print(error); print(error);
throw error;
} }
} }
Future<Map> insertDeviceImei(imei) async {
Future<Map> insertDeviceImei( imei) async {
Map<String, String> requestHeaders = { Map<String, String> requestHeaders = {
'Content-type': 'application/json', 'Content-type': 'application/json',
'Accept': 'application/json', 'Accept': 'application/json',
}; };
const url =INSERT_DEVICE_IMEI; const url = INSERT_DEVICE_IMEI;
try { try {
final response = await http.post(url, final response = await http.post(url,
headers: requestHeaders, headers: requestHeaders, body: json.encode(imei));
body: json.encode(imei));
return Future.value(json.decode(response.body)); return Future.value(json.decode(response.body));
} catch (error) { } catch (error) {
print(error); print(error);
throw error;
} }
} }
} }

@ -37,14 +37,9 @@ class PatientsProvider with ChangeNotifier {
"IsLoginForDoctorApp": patient.IsLoginForDoctorApp, "IsLoginForDoctorApp": patient.IsLoginForDoctorApp,
"PatientOutSA": patient.PatientOutSA "PatientOutSA": patient.PatientOutSA
})); }));
// var response = await http.post(url, body: {'name': 'doodle', 'color': 'blue'});
print('Response status: ${response.statusCode}');
print('Response body: ${response.body}');
// notifyListeners();
return Future.value(json.decode(response.body)); return Future.value(json.decode(response.body));
} catch (error) { } catch (error) {
print(error.toString()); throw error;
print('error');
} }
} }
} }

@ -0,0 +1,35 @@
import 'dart:convert';
import 'package:flutter/cupertino.dart';
import 'package:http/http.dart' as http;
const GET_PROJECTS =
'https://hmgwebservices.com/Services/Lists.svc/REST/GetProjectForDoctorAPP';
class ProjectsProvider with ChangeNotifier {
Future<Map> getProjectsList() async {
Map<String, String> requestHeaders = {
'Content-type': 'application/json',
'Accept': 'application/json',
};
const url = GET_PROJECTS;
var info = {
"LanguageID": 2,
"stamp": "2020-02-26T13:51:44.111Z",
"IPAdress": "11.11.11.11",
"VersionID": 1.2,
"Channel": 9,
"TokenID": "",
"SessionID": "i1UJwCTSqt",
"IsLoginForDoctorApp": true
};
try {
final response = await http.post(url,
headers: requestHeaders, body: json.encode(info));
return Future.value(json.decode(response.body));
} catch (error) {
throw error;
// print('error');
}
}
}

@ -1,3 +1,4 @@
import 'package:doctor_app_flutter/providers/projects_provider.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/rendering.dart'; import 'package:flutter/rendering.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
@ -23,6 +24,7 @@ class _LoginFormState extends State<LoginForm> {
final loginFormKey = GlobalKey<FormState>(); final loginFormKey = GlobalKey<FormState>();
String _platformImei = 'Unknown'; String _platformImei = 'Unknown';
String uniqueId = "Unknown"; String uniqueId = "Unknown";
var projectsList = [];
var userInfo = UserModel( var userInfo = UserModel(
UserID: '', UserID: '',
@ -42,6 +44,9 @@ class _LoginFormState extends State<LoginForm> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
if (projectsList.length == 0) {
getProjectsList();
}
AuthProvider authProv = Provider.of<AuthProvider>(context); AuthProvider authProv = Provider.of<AuthProvider>(context);
return LayoutBuilder(builder: (ctx, constraints) { return LayoutBuilder(builder: (ctx, constraints) {
@ -121,31 +126,60 @@ class _LoginFormState extends State<LoginForm> {
SizedBox( SizedBox(
height: 20, height: 20,
), ),
TextFormField( // TextFormField(
decoration: InputDecoration( // decoration: InputDecoration(
prefixIcon: Image.asset('assets/images/hospital_icon.png'), // prefixIcon: Image.asset('assets/images/hospital_icon.png'),
hintText: 'Select Project', // hintText: 'Select Project',
hintStyle: TextStyle( // hintStyle: TextStyle(
fontSize: // fontSize:
isSmallScreen ? 14 : constraints.maxWidth * 0.024), // isSmallScreen ? 14 : constraints.maxWidth * 0.024),
enabledBorder: OutlineInputBorder( // enabledBorder: OutlineInputBorder(
borderRadius: BorderRadius.all(Radius.circular(20)), // borderRadius: BorderRadius.all(Radius.circular(20)),
borderSide: BorderSide(color: Hexcolor('#CCCCCC')), // borderSide: BorderSide(color: Hexcolor('#CCCCCC')),
), // ),
focusedBorder: OutlineInputBorder( // focusedBorder: OutlineInputBorder(
borderRadius: BorderRadius.all(Radius.circular(10.0)), // borderRadius: BorderRadius.all(Radius.circular(10.0)),
borderSide: // borderSide:
BorderSide(color: Theme.of(context).primaryColor), // BorderSide(color: Theme.of(context).primaryColor),
) // )
//BorderRadius.all(Radius.circular(20)); // //BorderRadius.all(Radius.circular(20));
), // ),
validator: (value) { // validator: (value) {
if (value.isEmpty) { // if (value.isEmpty) {
return 'Please enter some text'; // return 'Please enter some text';
} // }
return null; // return null;
}, // },
// ),
//
Container(
decoration: BoxDecoration(
borderRadius: BorderRadius.all(Radius.circular(10.0)),
// border: Border.all(color: Theme.of(context).primaryColor),
),
width: double.infinity,
child: DropdownButton(
value: userInfo.ProjectID,
iconSize: 24,
elevation: 16,
selectedItemBuilder: (BuildContext context) {
return projectsList.map((item) {
return Text(item['Desciption']);
}).toList();
},
items: projectsList.map((item) {
return DropdownMenuItem(
child: Text('${item['Desciption']}'),
value: item['ID'],
);
}).toList(),
onChanged: (val) {
userInfo.ProjectID = val;
},
),
), ),
SizedBox( SizedBox(
height: 20, height: 20,
), ),
@ -209,7 +243,6 @@ class _LoginFormState extends State<LoginForm> {
loginFormKey.currentState.validate(); loginFormKey.currentState.validate();
loginFormKey.currentState.save(); loginFormKey.currentState.save();
authProv.login(userInfo).then((res) { authProv.login(userInfo).then((res) {
print(res['MobileNumber']);
if (res['MessageStatus'] == 1) { if (res['MessageStatus'] == 1) {
insertDeviceImei(res, authProv); insertDeviceImei(res, authProv);
// call insert imei // call insert imei
@ -218,7 +251,6 @@ class _LoginFormState extends State<LoginForm> {
} else { } else {
// handel error // handel error
} }
print(_platformImei + '_platformImei0');
Navigator.of(context).pushNamed(HOME); Navigator.of(context).pushNamed(HOME);
}).catchError((err) { }).catchError((err) {
print('$err'); print('$err');
@ -237,11 +269,13 @@ class _LoginFormState extends State<LoginForm> {
"DoctorTitle": "Mr.", "DoctorTitle": "Mr.",
"ClinicName": "MED", "ClinicName": "MED",
"ProjectName": "", "ProjectName": "",
"DoctorImageURL": "UNKNOWN" "DoctorImageURL": "UNKNOWN",
"LogInTokenID": res['LogInTokenID'],
"VersionID": 1.2
}; };
authProv.insertDeviceImei(imeiInfo).then((res) { authProv.insertDeviceImei(imeiInfo).then((res) {
if (res['MessageStatus'] == 1) { if (res['MessageStatus'] == 1) {
setSharedPref('platformImei',_platformImei); setSharedPref('platformImei', _platformImei);
// save imei on shared preferance // save imei on shared preferance
} else { } else {
// handel error // handel error
@ -278,10 +312,24 @@ class _LoginFormState extends State<LoginForm> {
Future<void> setSharedPref(key, value) async { Future<void> setSharedPref(key, value) async {
Future<SharedPreferences> _prefs = SharedPreferences.getInstance(); Future<SharedPreferences> _prefs = SharedPreferences.getInstance();
final SharedPreferences prefs = await _prefs; final SharedPreferences prefs = await _prefs;
print(key);
print(value);
prefs.setInt(key, value).then((bool success) { prefs.setInt(key, value).then((bool success) {
return; return;
}); });
} }
getProjectsList() {
ProjectsProvider projectsProv = Provider.of<ProjectsProvider>(context);
projectsProv.getProjectsList().then((res) {
if (res['MessageStatus'] == 1) {
setState(() {
projectsList = res['ListProject'];
});
} else {
// handel error
}
}).catchError((err) {
print(err);
});
}
} }

Loading…
Cancel
Save