import 'package:doctor_app_flutter/client/base_app_client.dart'; import 'package:doctor_app_flutter/config/config.dart'; import 'package:doctor_app_flutter/core/model/procedure/procedure_templateModel.dart'; import 'package:doctor_app_flutter/core/model/procedure/procedure_template_details_model.dart'; import 'package:doctor_app_flutter/core/model/procedure/procedure_template_details_request_model.dart'; import 'package:doctor_app_flutter/core/viewModel/procedure_View_model.dart'; import 'package:doctor_app_flutter/util/dr_app_toast_msg.dart'; import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/loader/gif_loader_dialog_utils.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; class ExpansionProcedure extends StatefulWidget { final ProcedureTempleteModel procedureTempleteModel; final ProcedureViewModel model; final Function(ProcedureTempleteDetailsModel) removeFavProcedure; final Function(ProcedureTempleteDetailsModel) addFavProcedure; final Function(ProcedureTempleteDetailsModel) addProceduresRemarks; final bool Function(ProcedureTempleteModel) isEntityListSelected; final bool Function(ProcedureTempleteDetailsModel) isEntityFavListSelected; const ExpansionProcedure( {Key key, this.procedureTempleteModel, this.model, this.removeFavProcedure, this.addFavProcedure, this.addProceduresRemarks, this.isEntityListSelected, this.isEntityFavListSelected}) : super(key: key); @override _ExpansionProcedureState createState() => _ExpansionProcedureState(); } class _ExpansionProcedureState extends State { bool _isShowMore = false; List _templateDetailsList = List(); BaseAppClient baseAppClient = BaseAppClient(); @override Widget build(BuildContext context) { return Column( children: [ InkWell( onTap: () async { if (!_isShowMore && _templateDetailsList.isEmpty) { GifLoaderDialogUtils.showMyDialog(context); await getProcedureTemplateDetails(widget.procedureTempleteModel.templateID); GifLoaderDialogUtils.hideDialog(context); } setState(() { _isShowMore = !_isShowMore; }); }, child: Container( padding: EdgeInsets.all(10.0), margin: EdgeInsets.only(left: 5, right: 5), decoration: BoxDecoration( shape: BoxShape.rectangle, color: Colors.white, borderRadius: BorderRadius.all( Radius.circular(5.0), )), child: Row( children: [ Expanded( child: Row( children: [ Icon( Icons.folder, size: 20, color: Color(0xff575757), ), Expanded( child: Padding( padding: const EdgeInsets.symmetric( horizontal: 10, vertical: 0), child: AppText( "Procedures for " + widget.procedureTempleteModel.templateName, fontSize: 16.0, variant: "bodyText", bold: true, color: Color(0xff575757)), ), ), ], )), Container( width: 25, height: 25, child: Icon( _isShowMore ? Icons.keyboard_arrow_up : Icons.keyboard_arrow_down, color: Colors.grey[800], size: 22, ), ) ], ), ), ), if (_isShowMore) AnimatedContainer( padding: EdgeInsets.all(10.0), margin: EdgeInsets.only(left: 5, right: 5), decoration: BoxDecoration( shape: BoxShape.rectangle, color: Colors.white, borderRadius: BorderRadius.only( bottomLeft: Radius.circular(5.0), bottomRight: Radius.circular(5.0), )), duration: Duration(milliseconds: 7000), child: Column( children: _templateDetailsList.map((itemProcedure) { return Container( child: Padding( padding: EdgeInsets.symmetric(horizontal: 12), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Row( children: [ Padding( padding: const EdgeInsets.symmetric(horizontal: 11), child: Checkbox( value: widget .isEntityFavListSelected(itemProcedure), activeColor: Color(0xffD02127), onChanged: (bool newValue) { setState(() { if (widget.isEntityFavListSelected(itemProcedure)) { widget.removeFavProcedure(itemProcedure); } else { widget.addFavProcedure(itemProcedure); } }); }), ), Expanded( child: Padding( padding: const EdgeInsets.symmetric( horizontal: 10, vertical: 0), child: AppText(itemProcedure.procedureName, fontSize: 14.0, variant: "bodyText", bold: true, color: Color(0xff575757)), ), ), ], ), ], ), ), ); }).toList(), ), ), SizedBox( height: 10, ), ], ); } getProcedureTemplateDetails(templateId)async { ProcedureTempleteDetailsRequestModel _procedureTempleteDetailsRequestModel = ProcedureTempleteDetailsRequestModel(templateID: templateId, searchType: 1, patientID: 0); _templateDetailsList.clear(); await baseAppClient.post(GET_PROCEDURE_TEMPLETE_DETAILS, onSuccess: (dynamic response, int statusCode) { response['HIS_ProcedureTemplateDetailsList'].forEach((template) { setState(() { _templateDetailsList.add(ProcedureTempleteDetailsModel.fromJson(template)); }); }); }, onFailure: (String error, int statusCode) { DrAppToastMsg.showErrorToast(error); }, body: _procedureTempleteDetailsRequestModel.toJson()); } }