// ignore: must_be_immutable import 'package:doctor_app_flutter/config/size_config.dart'; import 'package:doctor_app_flutter/core/enum/viewstate.dart'; import 'package:doctor_app_flutter/core/viewModel/authentication_view_model.dart'; import 'package:doctor_app_flutter/core/viewModel/dashboard_view_model.dart'; import 'package:doctor_app_flutter/core/viewModel/project_view_model.dart'; import 'package:doctor_app_flutter/util/dr_app_toast_msg.dart'; import 'package:doctor_app_flutter/util/translations_delegate_base.dart'; import 'package:doctor_app_flutter/widgets/patients/profile/profile-welcome-widget.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'; import 'package:font_awesome_flutter/font_awesome_flutter.dart'; import 'package:provider/provider.dart'; // ignore: must_be_immutable class HomeScreenHeader extends StatefulWidget with PreferredSizeWidget { final DashboardViewModel model; final Function onOpenDrawer; double height = SizeConfig.heightMultiplier * (SizeConfig.isHeightVeryShort ? 10 : 6); HomeScreenHeader({Key? key, required this.model, required this.onOpenDrawer}) : super(key: key); @override _HomeScreenHeaderState createState() => _HomeScreenHeaderState(); @override Size get preferredSize => Size(double.maxFinite,height); } class _HomeScreenHeaderState extends State { ProjectViewModel? projectsProvider; int? clinicId; AuthenticationViewModel? authenticationViewModel; @override Widget build(BuildContext context) { ProjectViewModel projectsProvider = Provider.of(context); authenticationViewModel = Provider.of(context); return widget.model.state == ViewState.Busy ? Container(color: Colors.grey.withOpacity(0.65)) : Container( color: Colors.grey[100], child: Stack(children: [ IconButton( icon: Icon(FontAwesomeIcons.ellipsisH), iconSize: SizeConfig.heightMultiplier * (SizeConfig.isHeightVeryShort?4: 3), color: Colors.black, onPressed: () { widget.onOpenDrawer(); }, ), Column( children: [ ProfileWelcomeWidget( Row( mainAxisAlignment: MainAxisAlignment.end, children: [ Container( width: MediaQuery .of(context) .size .width * .6, child: projectsProvider.doctorClinicsList.length > 0 ? Stack( children: [ DropdownButtonHideUnderline( child: DropdownButton( dropdownColor: Colors.white, iconEnabledColor: Colors.black, isExpanded: true, value: clinicId == null ? projectsProvider .doctorClinicsList[0].clinicID : clinicId, iconSize: SizeConfig.widthMultiplier * 7, elevation: 16, selectedItemBuilder: (BuildContext context) { return projectsProvider .doctorClinicsList .map((item) { return Row( mainAxisSize: MainAxisSize.max, mainAxisAlignment: MainAxisAlignment.end, children: [ Column( mainAxisAlignment: MainAxisAlignment .center, crossAxisAlignment: CrossAxisAlignment.center, children: [ Container( padding: EdgeInsets.all(2), margin: EdgeInsets.all(2), decoration: new BoxDecoration( color: Colors.red[800], borderRadius: BorderRadius .circular( 20), ), constraints: BoxConstraints( minWidth: SizeConfig .getHeightMultiplier( height: widget.height) * 35, minHeight: SizeConfig .getHeightMultiplier( height: widget.height) * 30, ), child: Center( child: AppText( projectsProvider .doctorClinicsList .length .toString(), color: Colors.white, fontSize: projectsProvider .isArabic ? SizeConfig .getHeightMultiplier( height: widget.height) : SizeConfig .getHeightMultiplier( height: widget .height) * 20, textAlign: TextAlign .center, ), )), ], ), AppText(item.clinicName, fontSize: SizeConfig .getTextMultiplierBasedOnWidth( width: MediaQuery .of(context) .size .width * .6) * (SizeConfig.isWidthLarge?4:5), color: Color(0xFF2B353E), maxLines: 1, maxLength: 2, letterSpacing: -0.96, textOverflow: TextOverflow .ellipsis, fontWeight: FontWeight.bold, textAlign: TextAlign.end), ], ); }).toList(); }, onChanged: (int? newValue) async { setState(() { clinicId = newValue; }); GifLoaderDialogUtils.showMyDialog( context); await widget.model.changeClinic(newValue!, authenticationViewModel!); GifLoaderDialogUtils.hideDialog( context); if (widget.model.state == ViewState.ErrorLocal) { DrAppToastMsg.showErrorToast( widget.model.error); } }, items: projectsProvider .doctorClinicsList .map((item) { return DropdownMenuItem( child: AppText( item.clinicName, textAlign: TextAlign.left, ), value: item.clinicID, ); }).toList(), )), ], ) : AppText( TranslationBase .of(context) .noClinic), ), ], ), isClinic: true, height: widget.height, ), ]) ])); } }