Minor Fixes

aamir_dev
Faiz Hashmi 10 months ago
parent 2ae5effe65
commit f7356592a0

@ -975,7 +975,7 @@ extension ShippingStatusEnumExt on int {
return ShippingRequestStatusEnum.inTransit;
} else if (this == 3) {
return ShippingRequestStatusEnum.outForDelivery;
} else if (this == 4) {
} else if (this == 4) {
return ShippingRequestStatusEnum.delivered;
}
return ShippingRequestStatusEnum.pending;
@ -995,8 +995,10 @@ extension ShippingStatusEnumToInt on ShippingRequestStatusEnum {
return 3;
case ShippingRequestStatusEnum.delivered:
return 4;
case ShippingRequestStatusEnum.allRequests:
return -1;
default:
return 0;
return -1;
}
}
}
@ -1009,3 +1011,33 @@ extension CapitalizeFirstLetter on String {
return this[0].toUpperCase() + substring(1).toLowerCase();
}
}
// Extension to convert InviteType to corresponding integer
extension InviteTypeToInt on InviteTypeEnum {
int toIntFromEnum() {
switch (this) {
case InviteTypeEnum.whatsapp:
return 1;
case InviteTypeEnum.sms:
return 2;
case InviteTypeEnum.email:
return 3;
}
}
}
// Extension to convert integer to corresponding InviteType
extension IntToInviteType on int {
InviteTypeEnum get toInviteTypeFromInt {
switch (this) {
case 1:
return InviteTypeEnum.whatsapp;
case 2:
return InviteTypeEnum.sms;
case 3:
return InviteTypeEnum.email;
default:
throw ArgumentError('Invalid integer value: $this');
}
}
}

@ -2,6 +2,7 @@ class EnumsModel {
int id;
int enumTypeId;
String enumValueStr;
String enumValueStrDes;
int enumValue;
bool isActive;
@ -9,6 +10,7 @@ class EnumsModel {
required this.id,
required this.enumTypeId,
required this.enumValueStr,
required this.enumValueStrDes,
required this.enumValue,
required this.isActive,
});
@ -17,20 +19,13 @@ class EnumsModel {
id: json["id"],
enumTypeId: json["enumTypeID"],
enumValueStr: json["enumValueStr"],
enumValueStrDes: json["enumValueStrDes"] ?? json["enumValueStr"],
enumValue: json["enumValue"],
isActive: json["isActive"],
);
@override
String toString() {
return 'EnumsModel{id: $id, enumTypeId: $enumTypeId, enumValueStr: $enumValueStr, enumValue: $enumValue, isActive: $isActive}';
return 'EnumsModel{id: $id, enumTypeId: $enumTypeId, enumValueStr: $enumValueStr,enumValueStrDes: $enumValueStrDes, enumValue: $enumValue, isActive: $isActive}';
}
Map<String, dynamic> toJson() => {
"id": id,
"enumTypeID": enumTypeId,
"enumValueStr": enumValueStr,
"enumValue": enumValue,
"isActive": isActive,
};
}

@ -170,6 +170,7 @@ class AppointmentRepoImp implements AppointmentRepo {
index = 0;
}
slotId = schedule.selectedCustomTimeDateSlotModel!.availableSlots![index].slotId;
mapList.add({

@ -20,7 +20,7 @@ abstract class SettingOptionsRepo {
Future<List<AppInfoModel>> getTermsAndConditions();
Future<void> appInvitationCreate({required int channelId});
Future<GenericRespModel> appInvitationCreate({required int channelId, required String message});
}
class SettingOptionsRepoImp extends SettingOptionsRepo {
@ -154,15 +154,15 @@ class SettingOptionsRepoImp extends SettingOptionsRepo {
}
@override
Future<void> appInvitationCreate({required int channelId}) async {
Future<GenericRespModel> appInvitationCreate({required int channelId, required String message}) async {
String token = appState.getUser.data!.accessToken ?? "";
final params = {
"channelID": channelId.toString(),
"comments": "string",
"comments": message,
};
if (AppState().currentAppType == AppType.provider) {
if (AppState().currentAppType == AppType.customer) {
params.addAll({
"customerID": (appState.getUser.data!.userInfo!.customerId ?? "0").toString(),
});
@ -178,5 +178,6 @@ class SettingOptionsRepoImp extends SettingOptionsRepo {
token: token,
params,
);
return genericRespModel;
}
}

@ -233,3 +233,11 @@ enum ShippingRequestStatusEnum {
outForDelivery,
delivered,
}
enum InviteTypeEnum {
whatsapp,
sms,
email,
}

@ -640,6 +640,37 @@ class Utils {
return result;
}
static Future<void> inviteFriend({required InviteTypeEnum inviteTypeEnum, required String message}) async {
String url;
switch (inviteTypeEnum) {
case InviteTypeEnum.whatsapp:
// WhatsApp requires a phone number and message, format like this:
url = 'https://wa.me/?text=${Uri.encodeComponent(message)}';
break;
case InviteTypeEnum.sms:
// SMS: 'sms:<phone_number>?body=<message>'
// You can add a phone number, or keep it empty to allow the user to input one.
url = 'sms:?body=${Uri.encodeComponent(message)}';
break;
case InviteTypeEnum.email:
// Email: 'mailto:<email>?subject=<subject>&body=<message>'
url = 'mailto:?subject=MowaterInvitation&body=${Uri.encodeComponent(message)}';
break;
}
// Try to launch the URL and catch any exceptions.
if (await canLaunchUrl(Uri.parse(url))) {
try {
await launchUrl(Uri.parse(url), mode: LaunchMode.externalApplication);
} catch (e) {
await launchUrl(Uri.parse(url), mode: LaunchMode.externalApplication);
}
}
}
static buildProviderContactInfoBottomSheet({required BuildContext context, required String? email, required String? mobileNo}) {
return showModalBottomSheet(
context: context,

@ -580,6 +580,7 @@ class AdVM extends BaseVM {
return;
}
vehicleBrandId = id;
vehicleModelId = SelectionModel(selectedOption: "", selectedId: -1, errorValue: "");
await getVehicleDetailsByVehicleBrandId();
notifyListeners();

@ -573,9 +573,9 @@ class AppointmentsVM extends BaseVM {
element.isSelected = false;
}
}
int index = serviceAppointmentScheduleList[scheduleIndex].selectedDateIndex!;
serviceAppointmentScheduleList[scheduleIndex].customTimeDateSlotList![index].availableSlots![slotIndex].isSelected = true;
serviceAppointmentScheduleList[scheduleIndex].selectedCustomTimeDateSlotModel!.availableSlots = serviceAppointmentScheduleList[scheduleIndex].customTimeDateSlotList![index].availableSlots!;
int dateIndex = serviceAppointmentScheduleList[scheduleIndex].selectedDateIndex!;
serviceAppointmentScheduleList[scheduleIndex].customTimeDateSlotList![dateIndex].availableSlots![slotIndex].isSelected = true;
serviceAppointmentScheduleList[scheduleIndex].selectedCustomTimeDateSlotModel!.availableSlots = serviceAppointmentScheduleList[scheduleIndex].customTimeDateSlotList![dateIndex].availableSlots!;
notifyListeners();
}
@ -633,7 +633,7 @@ class AppointmentsVM extends BaseVM {
}
branchesCategoriesFilterOptions[index].isSelected = true;
await getBranchesBasedOnCategoryFilters(categoryId: branchesCategoriesFilterOptions[index].id);
await getBranchesBasedOnCategoryFilters(serviceId: branchesCategoriesFilterOptions[index].id);
notifyListeners();
}
@ -1023,9 +1023,9 @@ class AppointmentsVM extends BaseVM {
if (branchesCategoriesFilterOptions.isNotEmpty) return;
branchesCategoriesFilterOptions.clear();
setOnlyState(ViewState.busy);
Category category = await branchRepo.fetchBranchCategory();
category.data?.forEach((element) {
branchesCategoriesFilterOptions.add(FilterListModel(id: element.id ?? 0, isSelected: false, iconUrl: element.serviceCategoryIconUrl ?? "", title: element.categoryName ?? "N/A"));
Services services = await branchRepo.fetchServicesByCategoryId(serviceCategoryId: -1);
services.data?.forEach((element) {
branchesCategoriesFilterOptions.add(FilterListModel(id: element.id ?? 0, isSelected: false, iconUrl: element.serviceIconUrl ?? "", title: element.description ?? ""));
});
branchesCategoriesFilterOptions.insert(0, FilterListModel(id: 0, isSelected: true, title: "All Branches"));
notifyListeners();
@ -1440,15 +1440,15 @@ class AppointmentsVM extends BaseVM {
setState(ViewState.idle);
}
Future<void> getBranchesBasedOnCategoryFilters({required int categoryId}) async {
Future<void> getBranchesBasedOnCategoryFilters({required int serviceId}) async {
setState(ViewState.busy);
if (categoryId == 0) {
if (serviceId == 0) {
await getAllNearBranches();
return;
}
nearbyBranches.clear();
nearbyBranches = await branchRepo.getBranchesByFilters(
categoryIdsList: [categoryId],
serviceIdsList: [serviceId],
latitude: AppState().currentLocation.latitude,
longitude: AppState().currentLocation.longitude,
);

@ -783,7 +783,7 @@ class RequestsVM extends BaseVM {
requestImages.add(element.toJson());
});
// try {
try {
GenericRespModel respModel = await requestRepo.createRequest(
requestTypeId: requestTypeId.selectedId,
vehicleTypeId: vehicleTypeId.selectedId,
@ -802,6 +802,7 @@ class RequestsVM extends BaseVM {
);
Utils.hideLoading(context);
if (respModel.messageStatus == 1) {
log("requestTypeId.selectedId.toRequestTypeEnum(): ${requestTypeId.selectedId.toRequestTypeEnum()}");
Utils.showToast(LocaleKeys.requestSuccessfullyCreated.tr());
Navigator.pop(context);
await applyFilterOnRequestsVM(requestsTypeEnum: requestTypeId.selectedId.toRequestTypeEnum());
@ -809,11 +810,11 @@ class RequestsVM extends BaseVM {
} else {
Utils.showToast(respModel.message.toString());
}
// } catch (e, s) {
// Utils.hideLoading(context);
// log(e.toString());
// Utils.showToast(e.toString());
// }
} catch (e, s) {
Utils.hideLoading(context);
log(e.toString());
Utils.showToast(e.toString());
}
}
}

@ -1,5 +1,8 @@
import 'package:flutter/cupertino.dart';
import 'package:mc_common_app/classes/consts.dart';
import 'package:mc_common_app/extensions/string_extensions.dart';
import 'package:mc_common_app/main.dart';
import 'package:mc_common_app/models/general_models/generic_resp_model.dart';
import 'package:mc_common_app/models/setting_utils_models/app_info_model.dart';
import 'package:mc_common_app/models/setting_utils_models/contact_infos_model.dart';
import 'package:mc_common_app/models/setting_utils_models/faqs_model.dart';
@ -74,19 +77,15 @@ class SettingOptionsVM extends BaseVM {
}
}
Future<void> appInvitationCreate({required BuildContext context, required int channelId}) async {
ShareResult result = await Utils.shareAppInvitation();
if (result.status != ShareResultStatus.success) {
return;
}
Future<void> appInvitationCreate({required BuildContext context, required InviteTypeEnum inviteTypeEnum}) async {
Utils.showLoading(context);
try {
await settingOptionsRepo.appInvitationCreate(channelId: channelId);
GenericRespModel respModel = await settingOptionsRepo.appInvitationCreate(channelId: inviteTypeEnum.toIntFromEnum(), message: GlobalConsts.getAppInvitationLink());
await Utils.inviteFriend(inviteTypeEnum: inviteTypeEnum, message: GlobalConsts.getAppInvitationLink());
Utils.hideLoading(context);
} catch (e) {
logger.i(e.toString());
Utils.showToast(e.toString());
Utils.hideLoading(context);
}
}

@ -48,8 +48,8 @@ class ShippingManagementVM extends BaseVM {
shippingRequestFilterOptions.clear();
shippingRequestStatusesList.clear();
for (int i = 0; i < shippingStatusEnums.length; i++) {
shippingRequestFilterOptions.add(FilterListModel(title: shippingStatusEnums[i].enumValueStr, isSelected: false, id: shippingStatusEnums[i].enumValue));
shippingRequestStatusesList.add(FilterListModel(title: shippingStatusEnums[i].enumValueStr, isSelected: false, id: shippingStatusEnums[i].enumValue));
shippingRequestFilterOptions.add(FilterListModel(title: shippingStatusEnums[i].enumValueStrDes, isSelected: false, id: shippingStatusEnums[i].enumValue));
shippingRequestStatusesList.add(FilterListModel(title: shippingStatusEnums[i].enumValueStrDes, isSelected: false, id: shippingStatusEnums[i].enumValue));
}
int index = shippingRequestFilterOptions.indexWhere((element) => element.id == 0);
@ -62,6 +62,7 @@ class ShippingManagementVM extends BaseVM {
}
Future<void> applyFiltersOnShippingRequests({required ShippingRequestStatusEnum shippingRequestStatusEnum}) async {
log("ship: $shippingRequestStatusEnum");
for (var value in shippingRequestFilterOptions) {
value.isSelected = false;
}
@ -71,7 +72,8 @@ class ShippingManagementVM extends BaseVM {
notifyListeners();
return;
}
shippingRequestFilterOptions[shippingRequestStatusEnum.getIdFromShippingStatusEnum() + 1].isSelected = true; // +1 to match with the index 0 index has all requests
int index = shippingRequestFilterOptions.indexWhere((element) => element.id == shippingRequestStatusEnum.getIdFromShippingStatusEnum());
shippingRequestFilterOptions[index].isSelected = true; // +1 to match with the index 0 index has all requests
await getShippingRequestsListByFilters(shippingStatusEnum: shippingRequestStatusEnum);
notifyListeners();
}

@ -5,9 +5,11 @@ 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/models/appointments_models/service_schedule_model.dart';
import 'package:mc_common_app/models/general_models/widgets_models.dart';
import 'package:mc_common_app/models/services_models/service_model.dart';
import 'package:mc_common_app/theme/colors.dart';
import 'package:mc_common_app/utils/enums.dart';
import 'package:mc_common_app/utils/utils.dart';
import 'package:mc_common_app/view_models/appointments_view_model.dart';
import 'package:mc_common_app/views/appointments/widgets/custom_calender_widget.dart';
import 'package:mc_common_app/widgets/button/show_fill_button.dart';
@ -53,6 +55,7 @@ class BookAppointmentSchedulesView extends StatelessWidget {
return ExpansionTile(
tilePadding: const EdgeInsets.symmetric(horizontal: 21, vertical: 10),
childrenPadding: const EdgeInsets.only(left: 16, bottom: 10, right: 16),
initiallyExpanded: true,
title: Column(
children: [
Row(
@ -120,6 +123,7 @@ class BookAppointmentSchedulesView extends StatelessWidget {
.customTimeDateSlotList![appointmentsVM.serviceAppointmentScheduleList[scheduleIndex].selectedDateIndex!].availableSlots ??
[],
onPressed: (slotIndex) {
log("slotIndex: $slotIndex");
appointmentsVM.updateSelectedAppointmentSlotByDate(scheduleIndex: scheduleIndex, slotIndex: slotIndex);
},
),
@ -151,10 +155,26 @@ class BookAppointmentSchedulesView extends StatelessWidget {
if (screenArgumentsForAppointmentDetailPage.routeFlag == 1) {
appointmentsVM.onReviewButtonPressed(context);
} else {
int selectedSlotId = 0;
int index = 0;
List<TimeSlotModel> timeSlots = appointmentsVM.serviceAppointmentScheduleList.first.selectedCustomTimeDateSlotModel!.availableSlots ?? [];
if (timeSlots.isNotEmpty) {
index = timeSlots.indexWhere((element) => element.isSelected);
}
if (index != -1) {
selectedSlotId = timeSlots[index].slotId;
} else {
Utils.showToast("Please select correct date and time.");
return;
}
log("selectedSlotId: $selectedSlotId");
appointmentsVM.onRescheduleAppointmentConfirmPressed(
context: context,
appointmentId: screenArgumentsForAppointmentDetailPage.appointmentId,
selectedSlotId: appointmentsVM.serviceAppointmentScheduleList.first.selectedCustomTimeDateSlotModel!.date!.slotId,
selectedSlotId: selectedSlotId,
);
}
},

@ -175,20 +175,20 @@ class _ChatViewState extends State<ChatView> {
child: chatMessages.isEmpty
? Center(child: LocaleKeys.noChatMessage.tr().toText(fontSize: 16, color: MyColors.lightTextColor, textAlign: TextAlign.center)).paddingAll(22)
: ListView.separated(
controller: chatVM.scrollController,
itemCount: chatMessages.length,
separatorBuilder: (BuildContext context, int index) => 20.height,
itemBuilder: (BuildContext context, int index) {
ChatMessageModel chatMessageModel = chatMessages[index];
return ChatMessageCustomWidget(
chatMessageModel: chatMessageModel,
requestModel: chatTypeEnum == ChatTypeEnum.requestOffer ? chatViewArgumentsForRequest!.requestModel! : null,
requestStatusEnum: requestVM.currentSelectedRequest?.requestStatus,
chatTypeEnum: chatTypeEnum,
requestsTypeEnum: chatTypeEnum == ChatTypeEnum.requestOffer ? chatViewArgumentsForRequest!.requestModel!.requestType.toRequestTypeEnum() : RequestsTypeEnum.specialCarRequest,
);
},
).horPaddingMain(),
controller: chatVM.scrollController,
itemCount: chatMessages.length,
separatorBuilder: (BuildContext context, int index) => 20.height,
itemBuilder: (BuildContext context, int index) {
ChatMessageModel chatMessageModel = chatMessages[index];
return ChatMessageCustomWidget(
chatMessageModel: chatMessageModel,
requestModel: chatTypeEnum == ChatTypeEnum.requestOffer ? chatViewArgumentsForRequest!.requestModel! : null,
requestStatusEnum: requestVM.currentSelectedRequest?.requestStatus,
chatTypeEnum: chatTypeEnum,
requestsTypeEnum: chatTypeEnum == ChatTypeEnum.requestOffer ? chatViewArgumentsForRequest!.requestModel!.requestType.toRequestTypeEnum() : RequestsTypeEnum.specialCarRequest,
);
},
).horPaddingMain(),
),
10.height,
Row(
@ -197,6 +197,7 @@ class _ChatViewState extends State<ChatView> {
if (chatTypeEnum == ChatTypeEnum.requestOffer &&
requestVM.currentSelectedRequest!.requestType.toRequestTypeEnum() == RequestsTypeEnum.serviceRequest &&
requestVM.currentSelectedRequest!.requestStatus == RequestStatusEnum.inProgress &&
requestVM.currentSelectedOffer!.requestOfferStatusEnum == RequestOfferStatusEnum.accepted &&
AppState().currentAppType == AppType.customer) ...[
Expanded(
child: ShowFillButton(
@ -232,90 +233,88 @@ class _ChatViewState extends State<ChatView> {
// ),
// ]
//
else
...[
if (AppState().currentAppType == AppType.provider &&
chatTypeEnum == ChatTypeEnum.requestOffer &&
requestVM.currentSelectedRequest!.requestStatus == RequestStatusEnum.submitted &&
chatVM.pickedImagesForMessage.isEmpty) ...[
Expanded(
flex: 1,
child: const Icon(
Icons.local_offer_rounded,
color: MyColors.darkPrimaryColor,
size: 30,
).onPress(
() {
requestVM.resetSendOfferBottomSheet();
RequestDetailPageArguments requestDetailArguments = RequestDetailPageArguments(
requestIndex: chatViewArgumentsForRequest!.requestIndex,
requestModel: chatViewArgumentsForRequest!.requestModel!,
);
buildSendOfferBottomSheet(
context: context,
requestDetailPageArguments: requestDetailArguments,
isFromChatScreen: true,
offerId: null, // null means creating new offer
);
},
),
),
],
if (chatVM.pickedImagesForMessage.isNotEmpty) ...[
Expanded(
flex: 8,
child: PickedFilesContainer(
pickedFiles: chatVM.pickedImagesForMessage,
onCrossPressedPrimary: chatVM.removeImageFromList,
onAddFilePressed: () => chatVM.pickMultipleImages(),
),
else ...[
if (AppState().currentAppType == AppType.provider &&
chatTypeEnum == ChatTypeEnum.requestOffer &&
requestVM.currentSelectedRequest!.requestStatus == RequestStatusEnum.submitted &&
chatVM.pickedImagesForMessage.isEmpty) ...[
Expanded(
flex: 1,
child: const Icon(
Icons.local_offer_rounded,
color: MyColors.darkPrimaryColor,
size: 30,
).onPress(
() {
requestVM.resetSendOfferBottomSheet();
RequestDetailPageArguments requestDetailArguments = RequestDetailPageArguments(
requestIndex: chatViewArgumentsForRequest!.requestIndex,
requestModel: chatViewArgumentsForRequest!.requestModel!,
);
buildSendOfferBottomSheet(
context: context,
requestDetailPageArguments: requestDetailArguments,
isFromChatScreen: true,
offerId: null, // null means creating new offer
);
},
),
] else
if (chatTypeEnum == ChatTypeEnum.requestOffer) ...[
Expanded(
flex: 1,
child: const Icon(
Icons.photo_library_rounded,
color: MyColors.darkPrimaryColor,
size: 30,
).onPress(() => chatVM.pickMultipleImages()),
),
],
if (chatVM.pickedImagesForMessage.isEmpty) ...[
Expanded(
flex: 8,
child: TxtField(
value: chatVM.chatMessageText,
hint: LocaleKeys.typeMessageHere.tr(),
keyboardType: TextInputType.text,
isNeedBorder: false,
onChanged: (v) => chatVM.updateChatMessageText(v),
),
),
],
if (chatVM.pickedImagesForMessage.isNotEmpty) ...[
Expanded(
flex: 8,
child: PickedFilesContainer(
pickedFiles: chatVM.pickedImagesForMessage,
onCrossPressedPrimary: chatVM.removeImageFromList,
onAddFilePressed: () => chatVM.pickMultipleImages(),
),
],
),
] else if (chatTypeEnum == ChatTypeEnum.requestOffer) ...[
Expanded(
flex: 1,
child: const Icon(Icons.send_rounded, color: MyColors.darkPrimaryColor, size: 30).onPress(
() async {
ChatMessageTypeEnum chatMessageTypeEnum = ChatMessageTypeEnum.freeText;
child: const Icon(
Icons.photo_library_rounded,
color: MyColors.darkPrimaryColor,
size: 30,
).onPress(() => chatVM.pickMultipleImages()),
),
],
if (chatVM.pickedImagesForMessage.isEmpty) ...[
Expanded(
flex: 8,
child: TxtField(
value: chatVM.chatMessageText,
hint: LocaleKeys.typeMessageHere.tr(),
keyboardType: TextInputType.text,
isNeedBorder: false,
onChanged: (v) => chatVM.updateChatMessageText(v),
),
),
],
Expanded(
flex: 1,
child: const Icon(Icons.send_rounded, color: MyColors.darkPrimaryColor, size: 30).onPress(
() async {
ChatMessageTypeEnum chatMessageTypeEnum = ChatMessageTypeEnum.freeText;
if (chatVM.pickedImagesForMessage.isNotEmpty) {
chatMessageTypeEnum = ChatMessageTypeEnum.image;
}
final status = await onMessageSend(chatMessageType: chatMessageTypeEnum);
if (chatVM.pickedImagesForMessage.isNotEmpty) {
chatMessageTypeEnum = ChatMessageTypeEnum.image;
}
final status = await onMessageSend(chatMessageType: chatMessageTypeEnum);
if (status) {
chatVM.scrollChatDown();
if (chatMessageTypeEnum == ChatMessageTypeEnum.freeText) {
chatVM.clearChatMessageText();
} else if (chatMessageTypeEnum == ChatMessageTypeEnum.image) {
chatVM.clearPickedImagesForMessage();
}
if (status) {
chatVM.scrollChatDown();
if (chatMessageTypeEnum == ChatMessageTypeEnum.freeText) {
chatVM.clearChatMessageText();
} else if (chatMessageTypeEnum == ChatMessageTypeEnum.image) {
chatVM.clearPickedImagesForMessage();
}
},
),
}
},
),
],
),
],
],
).toContainer(isShadowEnabled: true)
],

@ -40,7 +40,7 @@ class SettingOptionsInviteFriends extends StatelessWidget {
needBorderBelow: true,
showTrailingArrow: false,
onTap: () async {
await context.read<SettingOptionsVM>().appInvitationCreate(context: context, channelId: 1);
await context.read<SettingOptionsVM>().appInvitationCreate(context: context, inviteTypeEnum: InviteTypeEnum.whatsapp);
},
),
CustomSettingOptionsTile(
@ -53,7 +53,7 @@ class SettingOptionsInviteFriends extends StatelessWidget {
needBorderBelow: true,
showTrailingArrow: false,
onTap: () async {
await context.read<SettingOptionsVM>().appInvitationCreate(context: context, channelId: 2);
await context.read<SettingOptionsVM>().appInvitationCreate(context: context, inviteTypeEnum: InviteTypeEnum.sms);
}),
CustomSettingOptionsTile(
leadingWidget: const Icon(
@ -65,7 +65,7 @@ class SettingOptionsInviteFriends extends StatelessWidget {
needBorderBelow: false,
showTrailingArrow: false,
onTap: () async {
await context.read<SettingOptionsVM>().appInvitationCreate(context: context, channelId: 3);
await context.read<SettingOptionsVM>().appInvitationCreate(context: context, inviteTypeEnum: InviteTypeEnum.email);
},
),
30.height,

@ -32,7 +32,7 @@ class DropdownField extends StatefulWidget {
final TextStyle? textStyle;
final bool isSelectAble;
const DropdownField(this.onSelect, {Key? key, this.hint, this.list, this.dropdownValue, this.errorValue = "", this.showAppointmentPickerVariant = false, this.textStyle, this.isSelectAble = true}) : super(key: key);
const DropdownField(this.onSelect, {super.key, this.hint, this.list, this.dropdownValue, this.errorValue = "", this.showAppointmentPickerVariant = false, this.textStyle, this.isSelectAble = true});
@override
State<DropdownField> createState() => _DropdownFieldState();

Loading…
Cancel
Save