import 'package:geolocator/geolocator.dart'; import 'package:car_provider_app/config/provider_routes.dart'; import 'package:flutter/material.dart'; import 'package:mc_common_app/classes/app_state.dart'; import 'package:mc_common_app/classes/consts.dart'; import 'package:mc_common_app/extensions/int_extensions.dart'; import 'package:mc_common_app/extensions/string_extensions.dart'; import 'package:mc_common_app/models/general_models/m_response.dart'; import 'package:mc_common_app/models/provider_branches_models/branch_detail_model.dart'; import 'package:mc_common_app/theme/colors.dart'; import 'package:mc_common_app/utils/enums.dart'; import 'package:mc_common_app/utils/navigator.dart'; import 'package:mc_common_app/utils/utils.dart'; import 'package:mc_common_app/widgets/common_widgets/app_bar.dart'; import 'package:easy_localization/easy_localization.dart'; import 'package:mc_common_app/widgets/dropdown/dropdow_field.dart'; import 'package:mc_common_app/widgets/extensions/extensions_widget.dart'; import 'package:mc_common_app/widgets/tab/role_type_tab.dart'; import '../../../generated/locale_keys.g.dart'; import '../../../view_models/service_view_model.dart'; import 'package:provider/provider.dart'; import 'package:flutter_svg/flutter_svg.dart'; class BranchAppointmentFragment extends StatelessWidget { bool isNeedAppBar; VoidCallback onBackButtonTapped; BranchAppointmentFragment( {Key? key, this.isNeedAppBar = true, required this.onBackButtonTapped}) : super(key: key); @override Widget build(BuildContext context) { return Scaffold( appBar: !isNeedAppBar ? null : CustomAppBar( title: "Appointments", onBackButtonTapped: onBackButtonTapped, ), body: SizedBox( width: double.infinity, height: double.infinity, child: Column( children: [ Padding( padding: const EdgeInsets.only(left: 21, right: 21, top: 21), child: RoleTypeTab( context.watch().selectedBranchStatus == 3 ? 0 : context.watch().selectedBranchStatus, [ DropValue(3, "Active", ""), DropValue(1, "Requested", ""), ], onSelect: (DropValue value) { context.read().updateSelectedBranchType(value.id); }, ), ), Expanded( child: Consumer( builder: (context, model, _) { if (model.state == ViewState.busy) { return const Center(child: CircularProgressIndicator()); } else { List branches = []; if (model.branches!.data != null) { branches = model.branches!.data!.serviceProviderBranch! .where((element) => model.selectedBranchStatus == element.statusId) .toList(); } return branches.isEmpty ? Center(child: Text(LocaleKeys.no_branch.tr())) : ListView.separated( itemBuilder: (context, index) { return Row( children: [ Container( width: 74, height: 50, decoration: const BoxDecoration( color: MyColors.darkPrimaryColor, borderRadius: BorderRadius.all(Radius.circular(8)), ), padding: const EdgeInsets.all(6), child: SvgPicture.asset( MyAssets.icBranches, color: Colors.white, ), ), 12.width, Expanded( child: Column( crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start, children: [ Row( children: [ const Icon( Icons.place, size: 12, color: MyColors.darkPrimaryColor, ), Geolocator.distanceBetween( AppState() .currentLocation .latitude, AppState() .currentLocation .latitude, double.parse(branches[index] .latitude ?? "0"), double.parse(branches[index] .longitude ?? "0")) .toStringAsFixed(2) .toText( fontSize: 12, color: MyColors.darkPrimaryColor, ) ], ), Text( branches[index].branchName ?? "", style: const TextStyle( fontSize: 14, fontWeight: FontWeight.bold, ), ), "Tap to view".toText( fontSize: 10, color: MyColors.grey70Color), ], ), ), 12.width, ], ).toContainer().onPress(() async { branches[index].countryID = model.branches!.data!.countryID; branches[index].countryName = model.branches!.data!.countryName; navigateWithName( context, ProviderAppRoutes.appointment, arguments: branches[index]); }); }, separatorBuilder: (context, index) { return 12.height; }, itemCount: branches.length, padding: const EdgeInsets.all(12), ); } }, ), ), ], ), ), ); } }