/* *@author: Amjad Amireh Merge to Elham rababah *@Date:27/4/2020 *@param: *@return:PatientsScreen *@desc: */ import 'package:doctor_app_flutter/models/patient_model.dart'; import 'package:doctor_app_flutter/providers/patients_provider.dart'; import 'package:doctor_app_flutter/routes.dart'; import 'package:doctor_app_flutter/screens/patients/TopTenUsersModelResponse.dart'; import 'package:doctor_app_flutter/screens/patients/patiant_info_model.dart'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; //************* import '../../config/size_config.dart'; import 'package:hexcolor/hexcolor.dart'; //******** import '../../widgets/shared/app_scaffold_widget.dart'; import '../../widgets/shared/card_with_bg_widget.dart'; import 'package:doctor_app_flutter/config/config.dart'; class PatientsScreen extends StatefulWidget { @override _PatientsScreenState createState() => _PatientsScreenState(); } class _PatientsScreenState extends State { List litems; //******************* List responseModelList; //List> litems2; //******************* bool _isInit = true; var _isLoading = true; var _hasError; //*******Amjad add to search box****** final _controller = TextEditingController(); //************** PatientModel patient; @override void didChangeDependencies() { final routeArgs = ModalRoute.of(context).settings.arguments as Map; //PatientModel patient = routeArgs['patientSearchForm']; patient = routeArgs['patientSearchForm']; //PatiantInformtion patiantInfo = routeArgs['patientSearchForm']; print(patient.TokenID+"EEEEEE"); String patientType = routeArgs['selectedType']; print("**************patiant Type**************"); print(patientType); print("**************test**************"); if (_isInit) { // setState(() {}); PatientsProvider patientsProv = Provider.of(context); patientsProv.getPatientList(patient, patientType).then((res) { // print('MessageStatus${res['MessageStatus']}'); print('List_MyInPatient${(res['List_MyInPatient'])}'); setState(() { int val2=int.parse(patientType); litems =res[SERVICES_PATIANT2[val2]];//res['List_MyInPatient']; //******************** // litems2=res[SERVICES_PATIANT2[val2]]; //PatiantInformtion //List responseModelList = new PatiantInformtion.fromJson(litems).;//TopTenUsersModelResponse.fromJson(parsed).list; final List parsed = litems;//json.decode(response.body); //List responseModelList = new TopTenUsersModelResponse.fromJson(parsed).list; // List responseModelList = new TopTenUsersModelResponse.fromJson(parsed).list; responseModelList = new TopTenUsersModelResponse.fromJson(parsed).list; //******************** _isLoading = false; _hasError = res['ErrorEndUserMessage']; }); print(res); }).catchError((error) { print(error); }); } _isInit = false; super.didChangeDependencies(); } @override Widget build(BuildContext context) { return AppScaffold( appBarTitle: 'Patients', //***********Modify by amjad (create List view to insert all new data webservise in scroll )************* body: Container(child:ListView( scrollDirection: Axis.vertical, children: [ Container( //child:litems == null?Column():Column(children: [ child:litems == null?Column():Column(children: [ Container( width: SizeConfig.screenWidth * 0.80, child: TextField( controller: _controller, onSubmitted: (value) { // fetch all the news related to the keyword if (value.isNotEmpty) { // vm.search(value); } }, decoration: buildInputDecoration( context, 'Search patiant'), ), ), Column(children: responseModelList.map((PatiantInformtion item) { return InkWell( child: CardWithBgWidget( line1Text:item.nationalityName,//item['FirstName'],//patient.getFirstName(),//item['FirstName'], line2Text:item.lastName, //responseModelList['LastName'],//item['LastName'],//'12/04/2020 - 02:00 PM', // line3Text: item.middleName, heightPercentage: 0.15, widthPercentage: 0.80), onTap: (){ Navigator.of(context).pushNamed(PATIENTS_PROFILE, arguments: {"patient": responseModelList}); }, ); }).toList()) ], ), ), ], )) ); } //***********amjad update************* InputDecoration buildInputDecoration(BuildContext context, hint) { return InputDecoration( prefixIcon:Icon(Icons.search,color: Colors.red), filled: true, fillColor: Colors.white, //Image.asset(asset), /* icon: Padding( padding: const EdgeInsets.all(8.0), child: Icon(Icons.search), ),*/ hintText: hint, hintStyle: TextStyle(fontSize: 2 * SizeConfig.textMultiplier), 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), )); } //************* } //*********************** class CustomShapeClipper extends CustomClipper { @override Path getClip(Size size) { final Path path = Path(); path.lineTo(0.0, size.height); var firstEndPoint = Offset(size.width * .5, size.height / 2); var firstControlpoint = Offset(size.width * 0.25, size.height * 0.95 + 30); path.quadraticBezierTo(firstControlpoint.dx, firstControlpoint.dy, firstEndPoint.dx, firstEndPoint.dy); var secondEndPoint = Offset(size.width, size.height * 0.10); var secondControlPoint = Offset(size.width * .75, size.height * .10 - 20); path.quadraticBezierTo(secondControlPoint.dx, secondControlPoint.dy, secondEndPoint.dx, secondEndPoint.dy); path.lineTo(size.width, 0.0); path.close(); return path; } @override bool shouldReclip(CustomClipper oldClipper) => true; }