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

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

@ -37,14 +37,9 @@ class PatientsProvider with ChangeNotifier {
"IsLoginForDoctorApp": patient.IsLoginForDoctorApp,
"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));
} catch (error) {
print(error.toString());
print('error');
throw 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/rendering.dart';
import 'package:flutter/services.dart';
@ -23,6 +24,7 @@ class _LoginFormState extends State<LoginForm> {
final loginFormKey = GlobalKey<FormState>();
String _platformImei = 'Unknown';
String uniqueId = "Unknown";
var projectsList = [];
var userInfo = UserModel(
UserID: '',
@ -42,6 +44,9 @@ class _LoginFormState extends State<LoginForm> {
@override
Widget build(BuildContext context) {
if (projectsList.length == 0) {
getProjectsList();
}
AuthProvider authProv = Provider.of<AuthProvider>(context);
return LayoutBuilder(builder: (ctx, constraints) {
@ -121,31 +126,60 @@ class _LoginFormState extends State<LoginForm> {
SizedBox(
height: 20,
),
TextFormField(
decoration: InputDecoration(
prefixIcon: Image.asset('assets/images/hospital_icon.png'),
hintText: 'Select Project',
hintStyle: TextStyle(
fontSize:
isSmallScreen ? 14 : constraints.maxWidth * 0.024),
enabledBorder: OutlineInputBorder(
borderRadius: BorderRadius.all(Radius.circular(20)),
borderSide: BorderSide(color: Hexcolor('#CCCCCC')),
),
focusedBorder: OutlineInputBorder(
borderRadius: BorderRadius.all(Radius.circular(10.0)),
borderSide:
BorderSide(color: Theme.of(context).primaryColor),
)
//BorderRadius.all(Radius.circular(20));
),
validator: (value) {
if (value.isEmpty) {
return 'Please enter some text';
}
return null;
},
// TextFormField(
// decoration: InputDecoration(
// prefixIcon: Image.asset('assets/images/hospital_icon.png'),
// hintText: 'Select Project',
// hintStyle: TextStyle(
// fontSize:
// isSmallScreen ? 14 : constraints.maxWidth * 0.024),
// enabledBorder: OutlineInputBorder(
// borderRadius: BorderRadius.all(Radius.circular(20)),
// borderSide: BorderSide(color: Hexcolor('#CCCCCC')),
// ),
// focusedBorder: OutlineInputBorder(
// borderRadius: BorderRadius.all(Radius.circular(10.0)),
// borderSide:
// BorderSide(color: Theme.of(context).primaryColor),
// )
// //BorderRadius.all(Radius.circular(20));
// ),
// validator: (value) {
// if (value.isEmpty) {
// return 'Please enter some text';
// }
// 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(
height: 20,
),
@ -209,7 +243,6 @@ class _LoginFormState extends State<LoginForm> {
loginFormKey.currentState.validate();
loginFormKey.currentState.save();
authProv.login(userInfo).then((res) {
print(res['MobileNumber']);
if (res['MessageStatus'] == 1) {
insertDeviceImei(res, authProv);
// call insert imei
@ -218,7 +251,6 @@ class _LoginFormState extends State<LoginForm> {
} else {
// handel error
}
print(_platformImei + '_platformImei0');
Navigator.of(context).pushNamed(HOME);
}).catchError((err) {
print('$err');
@ -237,11 +269,13 @@ class _LoginFormState extends State<LoginForm> {
"DoctorTitle": "Mr.",
"ClinicName": "MED",
"ProjectName": "",
"DoctorImageURL": "UNKNOWN"
"DoctorImageURL": "UNKNOWN",
"LogInTokenID": res['LogInTokenID'],
"VersionID": 1.2
};
authProv.insertDeviceImei(imeiInfo).then((res) {
if (res['MessageStatus'] == 1) {
setSharedPref('platformImei',_platformImei);
setSharedPref('platformImei', _platformImei);
// save imei on shared preferance
} else {
// handel error
@ -278,10 +312,24 @@ class _LoginFormState extends State<LoginForm> {
Future<void> setSharedPref(key, value) async {
Future<SharedPreferences> _prefs = SharedPreferences.getInstance();
final SharedPreferences prefs = await _prefs;
print(key);
print(value);
prefs.setInt(key, value).then((bool success) {
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