From be68e065a315f6b0929518da7217841bfa68ffea Mon Sep 17 00:00:00 2001 From: Elham Rababah Date: Wed, 11 Mar 2020 17:37:16 +0200 Subject: [PATCH] first step from http request --- lib/main.dart | 26 ++++++---- lib/providers/patients_provider.dart | 50 +++++++++++++++++++ .../patients/patient_search_screen.dart | 2 +- .../patients/patients_list_screen.dart | 18 ++++++- pubspec.lock | 9 +++- pubspec.yaml | 3 ++ 6 files changed, 95 insertions(+), 13 deletions(-) create mode 100644 lib/providers/patients_provider.dart diff --git a/lib/main.dart b/lib/main.dart index f3c78442..3d692ae2 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,6 +1,7 @@ +import 'package:doctor_app_flutter/providers/patients_provider.dart'; import 'package:flutter/material.dart'; import 'package:hexcolor/hexcolor.dart'; - +import 'package:provider/provider.dart'; import './routes.dart'; void main() => runApp(MyApp()); @@ -9,15 +10,20 @@ class MyApp extends StatelessWidget { // This widget is the root of your application. @override Widget build(BuildContext context) { - return MaterialApp( - title: 'Flutter Demo', - theme: ThemeData( - primarySwatch: Colors.blue, - primaryColor: Hexcolor('#B8382C'), - buttonColor: Hexcolor('#B8382C'), - fontFamily: 'WorkSans'), - initialRoute: INIT_ROUTE, - routes: routes, + return MultiProvider( + providers: [ + ChangeNotifierProvider.value(value: PatientsProvider()), + ], + child: MaterialApp( + title: 'Flutter Demo', + theme: ThemeData( + primarySwatch: Colors.blue, + primaryColor: Hexcolor('#B8382C'), + buttonColor: Hexcolor('#B8382C'), + fontFamily: 'WorkSans'), + initialRoute: INIT_ROUTE, + routes: routes, + ), ); } } diff --git a/lib/providers/patients_provider.dart b/lib/providers/patients_provider.dart new file mode 100644 index 00000000..1d5c3d29 --- /dev/null +++ b/lib/providers/patients_provider.dart @@ -0,0 +1,50 @@ +import 'dart:io'; + +import 'package:doctor_app_flutter/models/patient_model.dart'; +import 'package:flutter/cupertino.dart'; +import 'package:http/http.dart' as http; +import 'dart:convert'; + +class PatientsProvider with ChangeNotifier { + Future getPatientList(PatientModel patient, patientType) async { + Map requestHeaders = { + 'Content-type': 'application/json', + 'Accept': 'application/json', + }; + const url = + 'https://hmgwebservices.com/Services/DoctorApplication.svc/REST/GetMyInPatient'; + try { + final response = await http.post(url, + headers: requestHeaders, + body: json.encode({ + "ProjectID": 12, + "ClinicID": 17, + "DoctorID": 98129, + "FirstName": "0", + "MiddleName": "0", + "LastName": "0", + "PatientMobileNumber": "0", + "PatientIdentificationID": "0", + "PatientID": 0, + "From": "0", + "To": "0", + "LanguageID": 2, + "stamp": "2020-03-02T13:56:39.170Z", + "IPAdress": "11.11.11.11", + "VersionID": 1.2, + "Channel": 9, + "TokenID": "2Fi7HoIHB0eDyekVa6tCJg==", + "SessionID": "5G0yXn0Jnq", + "IsLoginForDoctorApp": true, + "PatientOutSA": false + })); + // var response = await http.post(url, body: {'name': 'doodle', 'color': 'blue'}); + print('Response status: ${response.statusCode}'); + print('Response body: ${response.body}'); + notifyListeners(); + } catch (error) { + print(error.toString()); + print('error'); + } + } +} diff --git a/lib/screens/patients/patient_search_screen.dart b/lib/screens/patients/patient_search_screen.dart index 112028ac..72650e96 100644 --- a/lib/screens/patients/patient_search_screen.dart +++ b/lib/screens/patients/patient_search_screen.dart @@ -59,7 +59,7 @@ class _PatientSearchState extends State { print(_patientSearchFormValues.From); print(_patientSearchFormValues.To); - Navigator.of(context).pushNamed(PATIENTS); + Navigator.of(context).pushNamed(PATIENTS, arguments: {'patientSearchForm':_patientSearchFormValues,'selectedType':_selectedType}); } @override diff --git a/lib/screens/patients/patients_list_screen.dart b/lib/screens/patients/patients_list_screen.dart index 9e2af844..00fd4d7a 100644 --- a/lib/screens/patients/patients_list_screen.dart +++ b/lib/screens/patients/patients_list_screen.dart @@ -1,7 +1,23 @@ +import 'package:doctor_app_flutter/models/patient_model.dart'; +import 'package:doctor_app_flutter/providers/patients_provider.dart'; import 'package:flutter/material.dart'; -class PatientsList extends StatelessWidget { +import 'package:provider/provider.dart'; +class PatientsList extends StatefulWidget { + @override + _PatientsListState createState() => _PatientsListState(); +} + +class _PatientsListState extends State { @override Widget build(BuildContext context) { + final routeArgs = ModalRoute.of(context).settings.arguments as Map; + PatientModel patient = routeArgs['patientSearchForm']; + String patientType = routeArgs['selectedType']; + print(patientType); + var list ; + + PatientsProvider patientsProv = Provider.of(context); + patientsProv.getPatientList(patient, patientType); return Scaffold( appBar: AppBar(title: Text('PatientsList'),), ); diff --git a/pubspec.lock b/pubspec.lock index c2371589..99856f32 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -236,7 +236,7 @@ packages: source: hosted version: "0.14.0+3" http: - dependency: transitive + dependency: "direct main" description: name: http url: "https://pub.dartlang.org" @@ -382,6 +382,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.0.1" + provider: + dependency: "direct main" + description: + name: provider + url: "https://pub.dartlang.org" + source: hosted + version: "3.2.0" pub_semver: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index aa4df3aa..cfea4cc2 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -22,6 +22,9 @@ dependencies: hexcolor: ^1.0.1 flutter_device_type: ^0.2.0 intl: ^0.16.1 + http: ^0.12.0+4 + provider: ^3.0.0 + # The following adds the Cupertino Icons font to your application. # Use with the CupertinoIcons class for iOS style icons. cupertino_icons: ^0.1.2