aamir_dev
Aamir.Muhammad 1 year ago
parent 4fb6ee7fb5
commit ca563f41cd

@ -5,7 +5,7 @@ import Firebase
import flutter_local_notifications
@UIApplicationMain
@main
@objc class AppDelegate: FlutterAppDelegate {
override func application(
_ application: UIApplication,

@ -122,6 +122,7 @@ class DashboardVM extends BaseVM {
void performCheckOnBranches(BuildContext context) async {
if (AppState().getproviderSubscription.isNotEmpty && AppState().getproviderSubscription.first.branchesRemaining! > 0) {
logger.d(AppState().getproviderSubscription.first.toJson());
await navigateWithName(context, ProviderAppRoutes.defineBranch);
} else {
Utils.showToast("Upgrade your subscription to add more Branches.");
@ -131,6 +132,7 @@ class DashboardVM extends BaseVM {
void performCheckOnAds(BuildContext context) async {
//adsRemaining
if (AppState().getproviderSubscription.isNotEmpty && AppState().getproviderSubscription.first.adsRemaining! > 0) {
logger.d(AppState().getproviderSubscription.first.toJson());
await navigateWithName(context, ProviderAppRoutes.defineBranch);
} else {
Utils.showToast("Upgrade your subscription to add more Ads.");
@ -139,6 +141,7 @@ class DashboardVM extends BaseVM {
void performCheckOnUsers(BuildContext context, Function() callBack) async {
if (AppState().getproviderSubscription.isNotEmpty && AppState().getproviderSubscription.first.subUsersRemaining! > 0) {
logger.d(AppState().getproviderSubscription.first.toJson());
showMyBottomSheet(context, isDismissible: false, child: const AddPhoneNumWidget(), callBackFunc: callBack);
} else {
Utils.showToast("Upgrade your subscription to add more Sub Users.");

@ -8,6 +8,7 @@ import 'package:mc_common_app/models/services_models/item_model.dart';
import 'package:mc_common_app/services/common_services.dart';
import 'package:mc_common_app/utils/enums.dart';
import 'package:mc_common_app/utils/utils.dart';
import 'package:mc_common_app/view_models/ad_view_model.dart';
import 'package:mc_common_app/view_models/base_view_model.dart';
import 'package:file_picker/file_picker.dart';
import 'package:easy_localization/easy_localization.dart';
@ -24,7 +25,7 @@ class ItemsVM extends BaseVM {
ItemModel? serviceItems;
Future<String?> selectFile(BuildContext context) async {
File? file = await commonServices.pickFile(context,fileType: FileType.image);
File? file = await commonServices.pickFile(context, fileType: FileType.image);
if (file != null) {
int sizeInBytes = file.lengthSync();
@ -45,8 +46,7 @@ class ItemsVM extends BaseVM {
return response;
}
Future<ItemModel?> getServiceItems(int serviceId,
{List<PickerItem>? list}) async {
Future<ItemModel?> getServiceItems(int serviceId, {List<PickerItem>? list}) async {
serviceItems = null;
setOnlyState(ViewState.busy);
serviceItems = await itemsRepo.getServiceItems(serviceId);
@ -72,4 +72,10 @@ class ItemsVM extends BaseVM {
GenericRespModel response = await itemsRepo.updateServiceItem(map);
return response;
}
Future<File?> pickSingleFile(BuildContext context) async {
File? file = await commonServices.pickFile(context, fileType: FileType.custom, allowedExtensions: ['jpg', 'png', 'jpeg']);
if (file == null) return null;
return file;
}
}

@ -37,8 +37,10 @@ class UpdateAppointmentPage extends StatelessWidget {
child: Consumer(builder: (BuildContext context, AppointmentsVM appointmentsVM, Widget? child) {
appointmentListModel = appointmentsVM.myFilteredAppointments2[appointmentsVM.selectedAppointmentIndex].customerAppointmentList![appointmentsVM.selectedAppointmentSubIndex];
if (appointmentsVM.state == ViewState.busy) {
return const Center(child: CircularProgressIndicator());
} else {
print(appointmentListModel.appointmentPaymentStatusEnum);
return Column(
children: [
Expanded(
@ -96,7 +98,10 @@ class UpdateAppointmentPage extends StatelessWidget {
if ((appointmentListModel.appointmentStatusEnum == AppointmentStatusEnum.arrived || appointmentListModel.appointmentStatusEnum == AppointmentStatusEnum.workStarted) &&
appointmentListModel.appointmentPaymentStatusEnum == AppointmentPaymentStatusEnum.payNow)
LocaleKeys.waitingPaymentfromtheCustomer.tr().toText().paddingAll(21),
buildStatusContainer(text: LocaleKeys.waitingPaymentfromtheCustomer.tr()).paddingAll(10),
// LocaleKeys.waitingPaymentfromtheCustomer.tr().toText().paddingAll(21),
if (appointmentListModel.appointmentStatusEnum == AppointmentStatusEnum.arrived &&
(appointmentListModel.appointmentPaymentStatusEnum == AppointmentPaymentStatusEnum.paid ||
@ -228,6 +233,22 @@ class UpdateAppointmentPage extends StatelessWidget {
);
}
Widget buildStatusContainer({required String text}) {
return Center(
child: text.toString().toText(
color: MyColors.adPendingStatusColor,
fontSize: 14,
// isItalic: true,
),
).toContainer(
marginAll: 10,
paddingAll: 10,
borderRadius: 8,
width: double.infinity,
backgroundColor: MyColors.adPendingStatusColor.withOpacity(0.16),
);
}
Widget showCompleteButton(BuildContext context, AppointmentsVM appointmentsVM) {
return ShowFillButton(
title: LocaleKeys.complete.tr(),

@ -50,7 +50,7 @@ class BranchAppointmentFragment extends StatelessWidget {
return RefreshIndicator(
onRefresh: () async => serviceVM.getBranchAndServices(),
child: branches.isEmpty
? Center(child: Text(LocaleKeys.noBranchFound.tr()))
? Center(child: LocaleKeys.noBranchFound.tr().toText(fontSize: 16, color: MyColors.lightTextColor, fontWeight: MyFonts.Medium),)
: ListView.separated(
itemBuilder: (context, index) {
return Row(

@ -2,14 +2,18 @@ import 'package:car_provider_app/config/provider_routes.dart';
import 'package:car_provider_app/view_models/dashboard_view_model.dart';
import 'package:car_provider_app/views/dashboard/widget/my_service_provider.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/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/models/appointments_models/appointment_list_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/view_models/ad_view_model.dart';
import 'package:mc_common_app/view_models/appointments_view_model.dart';
import 'package:mc_common_app/views/advertisement/components/ads_list_widget.dart';
import 'package:mc_common_app/views/appointments/widgets/common_appointment_slider_widget.dart';
import 'package:mc_common_app/widgets/common_widgets/app_bar.dart';
@ -69,11 +73,22 @@ class HomeFragment extends StatelessWidget {
context.read<DashboardVM>().onNavbarTapped(1);
}).horPaddingMain(),
// const AppointmentSliderWidget().horPaddingMain(),
CommonAppointmentSliderWidget(
onAppointmentClick: (AppointmentListModel value) {
navigateWithName(context, ProviderAppRoutes.appointmentDetailList, arguments: value);
},
).toWhiteContainer(width: double.infinity,backgroundColor: Colors.transparent).margin(left: 21,right: 21),
//TODO TESTING PENDING
if (AppState().currentAppType == AppType.provider && context.read<AppointmentsVM>().myUpComingAppointments.isEmpty) ...[
LocaleKeys.noUpcomingAppointments.tr().toText(fontSize: 16, color: MyColors.lightTextColor, fontWeight: MyFonts.Medium).paddingAll(21),
] else ...[
CommonAppointmentSliderWidget(
onAppointmentClick: (AppointmentListModel value) {
navigateWithName(context, ProviderAppRoutes.appointmentDetailList, arguments: value);
},
)
.toWhiteContainer(
width: double.infinity,
backgroundColor: Colors.transparent,
)
.margin(left: 21, right: 21),
],
24.height,
ViewAllWidget(
title: LocaleKeys.myBranches.tr(),
@ -84,7 +99,9 @@ class HomeFragment extends StatelessWidget {
).horPaddingMain(),
const ServiceProviderWidget().horPaddingMain(),
],
).toWhiteContainer(width: double.infinity,),
).toWhiteContainer(
width: double.infinity,
),
Consumer(
builder: (BuildContext context, AdVM adVM, Widget? child) {
if (adVM.state == ViewState.busy) {

@ -173,17 +173,17 @@ class GeneralAppointmentWidget extends StatelessWidget {
),
],
),
Row(
children: [
"Location: ".toText(
color: MyColors.lightTextColor,
),
2.width,
appointmentListModel.appointmentType.toString().toText(
fontSize: 12,
),
],
),
// Row(
// children: [
// "Location: ".toText(
// color: MyColors.lightTextColor,
// ),
// 2.width,
// appointmentListModel.appointmentType.toString().toText(
// fontSize: 12,
// ),
// ],
// ),
],
),
),

@ -3,6 +3,7 @@ import 'package:car_provider_app/generated/locale_keys.g.dart';
import 'package:flutter/cupertino.dart';
import 'package:mc_common_app/generated/locale_keys.g.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/view_models/service_view_model.dart';
import 'package:flutter/material.dart';
import 'package:mc_common_app/classes/consts.dart';
@ -28,9 +29,9 @@ class ServiceProviderWidget extends StatelessWidget {
return const Center(child: CircularProgressIndicator());
} else {
return model.branches == null || model.branches!.data == null
? Center(child: Text(LocaleKeys.noBranchFound.tr()))
? Center(child: LocaleKeys.noBranchFound.tr().toText(fontSize: 16, color: MyColors.lightTextColor, fontWeight: MyFonts.Medium))
: model.branches!.data!.serviceProviderBranch != null && model.branches!.data!.serviceProviderBranch!.isEmpty
? Center(child: Text(LocaleKeys.no_branch.tr()))
? Center(child: LocaleKeys.no_branch.tr().toText(fontSize: 16, color: MyColors.lightTextColor, fontWeight: MyFonts.Medium))
: ListView.builder(
itemCount: model.branches!.data!.serviceProviderBranch!.length,
scrollDirection: Axis.horizontal,

@ -28,37 +28,17 @@ class BranchDetailPage extends StatelessWidget {
BranchDetailPage(this.branchData, {super.key});
List<CategoryData> categories = [];
getBranchUsers(BuildContext context) {
scheduleMicrotask(() {
context.read<ServiceVM>().getAllProviderDealers(
{"ServiceProviderBranchID": branchData.id.toString(), "ServiceProviderID": AppState().getUser.data?.userInfo?.providerId.toString() ?? ""},
);
context.read<ServiceVM>().filterUserBranchCategories();
});
}
filterBranch() {
for (var element in branchData.branchServices!) {
categories.add(
CategoryData(
id: element.categoryId,
categoryName: element.categoryName,
categoryNameN: element.categoryName,
),
);
}
categories = categories.toSet().toList();
for (var payment in categories) {
for (var element in branchData.branchServices!) {
if (payment.id == element.categoryId) {
payment.services ??= [];
payment.services!.add(element);
}
}
}
branchData.categories = categories;
}
bool validation(BuildContext context) {
bool isValid = false;
@ -167,7 +147,7 @@ class BranchDetailPage extends StatelessWidget {
return actionWidget.paddingAll(21);
}
Widget buildServiceTileWidget(int pIndex) {
Widget buildServiceTileWidget(int pIndex, ServiceVM vmodel) {
return Row(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisSize: MainAxisSize.min,
@ -189,7 +169,7 @@ class BranchDetailPage extends StatelessWidget {
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
categories[pIndex].categoryName.toString().toText(fontSize: 16),
vmodel.categories[pIndex].categoryName.toString().toText(fontSize: 16),
],
),
8.height,
@ -201,13 +181,16 @@ class BranchDetailPage extends StatelessWidget {
child: ListView.builder(
itemBuilder: (context, index) {
return Container(
child: (EasyLocalization.of(context)?.currentLocale?.countryCode == "SA" ? categories[pIndex].services![index].serviceDescriptionN.toString() : categories[pIndex].services![index].serviceDescription.toString()).toText(
child: (EasyLocalization.of(context)?.currentLocale?.countryCode == "SA"
? vmodel.categories[pIndex].services![index].serviceDescriptionN.toString()
: vmodel.categories[pIndex].services![index].serviceDescription.toString())
.toText(
fontSize: 12,
color: MyColors.lightTextColor,
),
);
},
itemCount: categories[pIndex].services?.length,
itemCount: vmodel.categories[pIndex].services?.length,
physics: const NeverScrollableScrollPhysics(),
shrinkWrap: true,
padding: EdgeInsets.zero,
@ -223,7 +206,7 @@ class BranchDetailPage extends StatelessWidget {
@override
Widget build(BuildContext context) {
filterBranch();
getBranchUsers(context);
return Scaffold(
appBar: CustomAppBar(title: LocaleKeys.branchDetail.tr()),
body: Consumer<ServiceVM>(builder: (context, model, _) {
@ -350,13 +333,13 @@ class BranchDetailPage extends StatelessWidget {
}),
ListView.separated(
itemBuilder: (context, pIndex) {
return buildServiceTileWidget(pIndex).onPress(() {
categories[pIndex].branchId = branchData.id.toString();
categories[pIndex].branchName = branchData.branchName.toString();
navigateWithName(context, ProviderAppRoutes.servicesList, arguments: categories[pIndex]);
return buildServiceTileWidget(pIndex, model).onPress(() {
model.categories[pIndex].branchId = branchData.id.toString();
model.categories[pIndex].branchName = branchData.branchName.toString();
navigateWithName(context, ProviderAppRoutes.servicesList, arguments: model.categories[pIndex]);
});
},
itemCount: categories.length,
itemCount: model.categories.length,
physics: const NeverScrollableScrollPhysics(),
shrinkWrap: true,
padding: const EdgeInsets.all(20),

@ -1,4 +1,5 @@
import 'package:car_provider_app/config/provider_routes.dart';
import 'package:car_provider_app/view_models/dashboard_view_model.dart';
import 'package:flutter/gestures.dart';
import 'package:mc_common_app/classes/consts.dart';
import 'package:mc_common_app/generated/locale_keys.g.dart';
@ -104,7 +105,7 @@ class BranchListPage extends StatelessWidget {
return RefreshIndicator(
onRefresh: () async => await context.read<ServiceVM>().getBranchAndServices(),
child: branches.isEmpty
? Center(child: LocaleKeys.no_branch.tr().toText(fontSize: 16, color: MyColors.lightTextColor))
? Center(child: LocaleKeys.no_branch.tr().toText(fontSize: 16, color: MyColors.lightTextColor, fontWeight: MyFonts.Medium))
: ListView.separated(
itemBuilder: (context, index) {
BranchDetailModel branchModel = branches[index];
@ -204,7 +205,7 @@ class BranchListPage extends StatelessWidget {
color: Colors.white,
),
onPressed: () {
navigateWithName(context, ProviderAppRoutes.defineBranch);
context.read<DashboardVM>().checkUserSubscription(SubscriptionActionTypeEnum.branches, context, callback: () { });
},
),
);

@ -1,4 +1,5 @@
import 'dart:async';
import 'package:car_provider_app/view_models/dashboard_view_model.dart';
import 'package:mc_common_app/classes/consts.dart';
import 'package:mc_common_app/extensions/string_extensions.dart';
import 'package:mc_common_app/generated/locale_keys.g.dart';
@ -10,7 +11,7 @@ import 'package:mc_common_app/views/location_views/pick_location_page.dart';
import 'package:mc_common_app/extensions/int_extensions.dart';
import 'package:mc_common_app/models/provider_branches_models/branch_detail_model.dart';
import 'package:mc_common_app/theme/colors.dart';
import 'package:provider/provider.dart';
import 'package:provider/provider.dart';
import 'package:mc_common_app/utils/enums.dart';
import 'package:mc_common_app/utils/navigator.dart';
import 'package:mc_common_app/views/advertisement/ad_creation_steps/ad_creation_steps_containers.dart';

@ -309,7 +309,7 @@ class _AddSchedulesPageState extends State<AddSchedulesPage> {
"fromDate": startDate,
"toDate": endDate,
"startTime": startTime,
"endTime": endDate,
"endTime": endTime,
"slotDurationMinute": slotsTime,
"perSlotAppointment": appointmentPerSlot,
"deliveryServiceType": 1,

@ -1,8 +1,11 @@
import 'dart:convert';
import 'dart:io';
import 'package:car_provider_app/view_models/items_view_model.dart';
import 'package:flutter/material.dart';
import 'package:mc_common_app/classes/consts.dart';
import 'package:mc_common_app/extensions/int_extensions.dart';
import 'package:mc_common_app/generated/locale_keys.g.dart';
import 'package:mc_common_app/models/general_models/generic_resp_model.dart';
import 'package:mc_common_app/models/services_models/item_model.dart';
import 'package:mc_common_app/theme/colors.dart';
@ -10,6 +13,9 @@ import 'package:mc_common_app/utils/app_permission_handler.dart';
import 'package:mc_common_app/utils/date_helper.dart';
import 'package:mc_common_app/utils/navigator.dart';
import 'package:mc_common_app/utils/utils.dart';
import 'package:mc_common_app/view_models/ad_view_model.dart';
import 'package:mc_common_app/views/advertisement/ad_creation_steps/ad_creation_steps_containers.dart';
import 'package:mc_common_app/views/advertisement/components/picked_images_container_widget.dart';
import 'package:mc_common_app/widgets/button/show_fill_button.dart';
import 'package:mc_common_app/widgets/checkbox_with_title_desc.dart';
import 'package:mc_common_app/widgets/common_widgets/app_bar.dart';
@ -17,6 +23,7 @@ import 'package:mc_common_app/widgets/extensions/extensions_widget.dart';
import 'package:mc_common_app/widgets/txt_field.dart';
import 'package:permission_handler/permission_handler.dart';
import 'package:provider/provider.dart';
import 'package:easy_localization/easy_localization.dart';
class CreateItemPage extends StatefulWidget {
const CreateItemPage({Key? key}) : super(key: key);
@ -31,6 +38,7 @@ class _CreateItemPageState extends State<CreateItemPage> {
bool isWorkshopAppointmentAvailable = false;
bool isHomeAppointmentAvailable = false;
bool isDefaultValudDone = false;
File? file;
ItemsVM? model;
ItemData? itemData;
@ -113,59 +121,28 @@ class _CreateItemPageState extends State<CreateItemPage> {
},
),
12.height,
if (itemImage != null && itemImage!.isNotEmpty)
Column(
children: [
Image.memory(
base64Decode(itemImage ?? ""),
).toContainer(
isEnabledBorder: true,
paddingAll: 12,
),
12.height,
],
),
InkWell(
onTap: () async {
bool isPermissionsAvailable = await requestPermissionGranted(context, Permission.storage);
if (isPermissionsAvailable && model != null) {
itemImage = await model!.selectFile(context) ?? "";
if (file != null) ...[
PickedFilesContainer(
pickedFiles: pickedImages(),
onCrossPressedPrimary: onCrossPress,
isPdf: false,
isReview: false,
isFromNetwork: false,
onAddFilePressed: () async {
file = await model!.pickSingleFile(context);
setState(() {});
}
},
child: Container(
width: double.infinity,
height: 45,
decoration: BoxDecoration(
color: Colors.transparent,
border: Border.all(color: MyColors.greyACColor, width: 2),
borderRadius: const BorderRadius.all(Radius.circular(0)),
),
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
const Icon(
Icons.attach_file,
size: 18,
color: MyColors.darkPrimaryColor,
),
8.width,
const Text(
"Attach Item Image",
style: TextStyle(
color: MyColors.darkPrimaryColor,
),
),
const Icon(
Icons.attach_file,
size: 18,
color: Colors.transparent,
),
],
),
},
),
),
] else ...[
10.height,
DottedRectContainer(
onTap: () async {
file = await model!.pickSingleFile(context);
setState(() {});
},
text: LocaleKeys.attachImage.tr(),
icon: MyAssets.attachmentIcon.buildSvg())
],
20.height,
CheckBoxWithTitleDescription(
isSelected: isAppointmentAvailable,
@ -212,12 +189,13 @@ class _CreateItemPageState extends State<CreateItemPage> {
maxWidth: double.infinity,
onPressed: () async {
if (validation()) {
var attachedFile = await Utils.convertFileToBase64(file!);
if (!(itemData?.isUpdateOrSelected ?? false)) {
Map map = {
"name": name,
"price": price,
"description": description,
"itemImage": itemImage ?? "",
"itemImage": attachedFile ?? "",
"companyID": 1,
"manufactureDate": year,
"serviceProviderServiceID": itemData!.serviceProviderServiceId,
@ -240,7 +218,7 @@ class _CreateItemPageState extends State<CreateItemPage> {
"name": name,
"price": price,
"description": description,
"itemImage": itemImage ?? "",
"itemImage": attachedFile ?? "",
"companyID": 1,
"manufactureDate": year,
"serviceProviderServiceID": itemData!.serviceProviderServiceId,
@ -284,4 +262,17 @@ class _CreateItemPageState extends State<CreateItemPage> {
}
return valid;
}
void onCrossPress(String item) {
file = null;
setState(() {});
}
List<ImageModel> pickedImages() {
List<ImageModel> pickedImage = [];
if (file != null) {
pickedImage.add(ImageModel(isFromNetwork: false, id: 1, filePath: file!.path));
}
return pickedImage;
}
}

@ -1,6 +1,8 @@
import 'dart:async';
import 'package:mc_common_app/classes/app_state.dart';
import 'package:mc_common_app/generated/locale_keys.g.dart';
import 'package:mc_common_app/models/general_models/generic_resp_model.dart';
import 'package:mc_common_app/utils/navigator.dart';
import 'package:mc_common_app/view_models/service_view_model.dart';
import 'package:car_provider_app/views/settings/services/services_list_page.dart';
import 'package:flutter/material.dart';
@ -266,9 +268,10 @@ class _CreateServicesPage3State extends State<CreateServicesPage3> {
// print(map);
Utils.showLoading(context);
GenericRespModel mResponse = await model.createService(map);
model.getBranchAndServices();
await model.getBranchAndServices();
Utils.hideLoading(context);
Utils.showToast(mResponse.message ?? "");
pop(context);
}
updateService(BuildContext context, ServiceVM model) async {
@ -286,7 +289,9 @@ class _CreateServicesPage3State extends State<CreateServicesPage3> {
Utils.showLoading(context);
GenericRespModel mResponse = await model.updateServices(map);
model.getBranchAndServices();
model.filterUserBranchCategories();
Utils.hideLoading(context);
Utils.showToast(mResponse.message ?? "");
pop(context);
}
}

@ -98,7 +98,7 @@ class _MatchedServicesPageState extends State<MatchedServicesPage> {
if (model.matchedServices == null) {
return const Center(child: CircularProgressIndicator());
} else if (model.matchedServices!.isEmpty) {
return const EmptyWidget();
return const EmptyWidget(text: "No Services found", isWrapedColumn: false);
}
return ListView.separated(
itemBuilder: (context, index) {
@ -123,7 +123,8 @@ class _MatchedServicesPageState extends State<MatchedServicesPage> {
crossAxisAlignment: CrossAxisAlignment.start,
children: [
model.matchedServices![index].serviceDescription.toString().toText(fontSize: 16, isBold: true),
"${model.matchedServices![index].serviceItems!.where((c) => c.isUpdateOrSelected == true).length} items selected out of ${model.matchedServices![index].serviceItems!.length}".toText(color: MyColors.lightTextColor)
"${model.matchedServices![index].serviceItems!.where((c) => c.isUpdateOrSelected == true).length} items selected out of ${model.matchedServices![index].serviceItems!.length}"
.toText(color: MyColors.lightTextColor)
],
),
),

@ -41,7 +41,7 @@ class ItemsListPage extends StatelessWidget {
return model.state == ViewState.busy
? const Center(child: CircularProgressIndicator())
: model.serviceItems!.data!.isEmpty
? const EmptyWidget()
? const EmptyWidget(text: "No Service Items found", isWrapedColumn: false)
: ListView.separated(
itemBuilder: (BuildContext context, int index) {
return SizedBox(

@ -40,8 +40,8 @@ dependencies:
# path: C:/Users/mirza.shafique/AndroidStudioProjects/mc_common_app
mc_common_app:
path: /Volumes/Data/Projects/Flutter/car_common_app
# path: /Users/amir/StudioProjects/car_common_app
# path: /Volumes/Data/Projects/Flutter/car_common_app
path: /Users/amir/StudioProjects/car_common_app

Loading…
Cancel
Save