import 'dart:developer'; import 'package:mc_common_app/view_models/appointments_view_model.dart'; import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:mc_common_app/classes/consts.dart'; import 'package:mc_common_app/config/routes.dart'; import 'package:mc_common_app/extensions/int_extensions.dart'; import 'package:mc_common_app/extensions/string_extensions.dart'; import 'package:mc_common_app/generated/locale_keys.g.dart'; import 'package:mc_common_app/theme/colors.dart'; import 'package:mc_common_app/utils/navigator.dart'; import 'package:mc_common_app/widgets/common_widgets/app_bar.dart'; import 'package:mc_common_app/widgets/common_widgets/provider_details_card.dart'; import 'package:mc_common_app/widgets/extensions/extensions_widget.dart'; import 'package:provider/provider.dart'; class ProviderProfileView extends StatefulWidget { final int providerId; ProviderProfileView({required this.providerId}); @override State createState() => _ProviderProfileViewState(); } class _ProviderProfileViewState extends State { @override void initState() { super.initState(); context.read().getBranchAndServices(widget.providerId); } @override Widget build(BuildContext context) { return Consumer( builder: (BuildContext context, AppointmentsVM appointmentsVM, Widget? child) { // log("appointmentsVM.providerProfileModel!.isFavorite: ${appointmentsVM.providerProfileModel!.isFavorite}"); if (appointmentsVM.providerProfileModel == null) { return Scaffold( backgroundColor: MyColors.white, body: Center( child: CircularProgressIndicator(), ), ); } return Scaffold( appBar: CustomAppBar( title: LocaleKeys.providerDetails.tr(), actions: [ Icon( appointmentsVM.providerProfileModel!.isFavorite! ? Icons.favorite : Icons.favorite_border, color: appointmentsVM.providerProfileModel!.isFavorite! ? MyColors.darkPrimaryColor : MyColors.black, ).horPaddingMain().onPress(() {}), ], ), body: Container( width: double.infinity, height: double.infinity, padding: EdgeInsets.all(21), child: SingleChildScrollView( child: Column( children: [ Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ //TODO: company logo/banner not added form provider app yet Image.asset(MyAssets.bnCar), 12.height, appointmentsVM.providerProfileModel!.companyName.toString().toText( fontSize: 16, isBold: true, ), Row( children: [ ("Mowater Member Since:").toText(color: MyColors.lightTextColor, fontSize: 12), 4.width, //TODO: date is missing from API side "2023".toText(fontSize: 12, isBold: true), ], ), 4.height, appointmentsVM.providerProfileModel!.companyDescription!.toText(color: MyColors.lightTextColor, fontSize: 12), ], ).toWhiteContainer(width: double.infinity, allPading: 12), 12.height, appointmentsVM.providerProfileModel!.serviceProviderBranch == null ? Center(child: Text(LocaleKeys.noBranchFound)) : appointmentsVM.providerProfileModel!.serviceProviderBranch!.isEmpty ? Center(child: Text(LocaleKeys.no_branch.tr())) : ListView.separated( itemBuilder: (context, index) { return ProviderDetailsCard( onCardTapped: () { navigateWithName(context, AppRoutes.branchDetailView, arguments: appointmentsVM.providerProfileModel!.serviceProviderBranch![index]); }, providerImageUrl: MyAssets.bnCar, title: appointmentsVM.providerProfileModel!.serviceProviderBranch![index].branchName ?? "", providerLocation: appointmentsVM.providerProfileModel!.serviceProviderBranch![index].distanceKm.toString() + " KM", providerName: appointmentsVM.providerProfileModel!.serviceProviderBranch![index].serviceProviderName ?? "", providerRatings: "4.9", services: appointmentsVM.providerProfileModel!.serviceProviderBranch![index].branchServices, ); }, separatorBuilder: (context, index) { return 12.height; }, itemCount: appointmentsVM.providerProfileModel!.serviceProviderBranch!.length, physics: NeverScrollableScrollPhysics(), shrinkWrap: true, ) ], ), ), ), ); }, ); } }