Merged Ads Module in Common

merge-requests/2/head
FaizHashmiCS22 3 years ago
parent ea5039bd97
commit 1b59c8f31a

@ -3,6 +3,7 @@ import 'package:car_customer_app/views/book_provider_app_view.dart';
import 'package:car_customer_app/views/dashboard/dashboard_page.dart';
import 'package:flutter/cupertino.dart';
import 'package:mc_common_app/config/routes.dart';
import 'package:mc_common_app/models/advertisment_models/ad_details_model.dart';
import 'package:mc_common_app/views/advertisement/ads_detail_view.dart';
import 'package:mc_common_app/views/advertisement/create_ad_view.dart';
@ -11,8 +12,7 @@ class CustomerAppRoutes {
AppRoutes.dashboard: (context) => DashboardPage(),
AppRoutes.bookProviderAppView: (context) => BookProviderAppView(),
AppRoutes.appointmentDetailView: (context) => AppointmentDetailView(),
AppRoutes.adsDetailView: (context) => AdsDetailView(),
AppRoutes.adsDetailView: (context) => AdsDetailView(adDetails: ModalRoute.of(context)!.settings.arguments as AdDetailsModel),
AppRoutes.createAdView: (context) => CreateAdView(),
};
}

@ -1,6 +1,5 @@
import 'package:car_customer_app/config/customer_dependencies.dart';
import 'package:car_customer_app/config/customer_routes.dart';
import 'package:mc_common_app/view_models/ad_view_model.dart';
import 'package:car_customer_app/view_models/dashboard_view_model.dart';
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart';
@ -13,6 +12,7 @@ import 'package:mc_common_app/config/routes.dart';
import 'package:mc_common_app/models/post_params_model.dart';
import 'package:mc_common_app/repositories/user_repo.dart';
import 'package:mc_common_app/utils/enums.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:mc_common_app/view_models/user_view_model.dart';
import 'package:mc_common_app/widgets/extensions/extensions_widget.dart';
@ -20,6 +20,8 @@ import 'package:sizer/sizer.dart';
import 'package:provider/provider.dart';
import 'package:provider/single_child_widget.dart';
import 'package:mc_common_app/repositories/common_repo.dart';
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
CustomerDependencies.addDependencies();
@ -42,7 +44,7 @@ Future<void> main() async {
create: (_) => UserVM(userRepo: injector.get<UserRepo>()),
),
ChangeNotifierProvider<AdVM>(
create: (_) => AdVM(commonServices: injector.get<CommonServices>()),
create: (_) => AdVM(commonServices: injector.get<CommonServices>(), commonRepo: injector.get<CommonRepo>()),
),
],
child: const MyApp(),

@ -3,20 +3,20 @@ import 'package:mc_common_app/config/routes.dart';
import 'package:mc_common_app/extensions/int_extensions.dart';
import 'package:mc_common_app/theme/colors.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/widgets/button/show_fill_button.dart';
import 'package:mc_common_app/widgets/common_widgets/ads_list.dart';
import 'package:provider/provider.dart';
import 'package:mc_common_app/views/advertisement/ads_list.dart';
class AdsFragment extends StatefulWidget {
AdsFragment({Key? key}) : super(key: key);
@override
State<AdsFragment> createState() => _AdsFragmentState();
}
class _AdsFragmentState extends State<AdsFragment> {
bool isExploreAdsTapped = true;
class AdsFragment extends StatelessWidget {
AdsFragment({Key? key}) : super(key: key);
bool isMyAdsTapped = false;
Future<void> onRefreshAds(BuildContext context) async {
AdVM adVM = context.read<AdVM>();
await adVM.getAllAds();
await adVM.getMyAds();
}
@override
Widget build(BuildContext context) {
@ -28,51 +28,48 @@ class _AdsFragmentState extends State<AdsFragment> {
child: Column(
children: [
16.height,
Row(
children: [
Expanded(
child: ShowFillButton(
isFilled: isExploreAdsTapped,
maxHeight: 55,
title: "Explore Ads",
txtColor: isExploreAdsTapped ? MyColors.white : MyColors.darkTextColor,
onPressed: () {
if (!isExploreAdsTapped) {
isExploreAdsTapped = true;
isMyAdsTapped = false;
}
setState(() {});
},
),
),
12.width,
Expanded(
child: ShowFillButton(
isFilled: isMyAdsTapped,
txtColor: isMyAdsTapped ? MyColors.white : MyColors.darkTextColor,
maxHeight: 55,
title: "My Ads",
onPressed: () {
if (!isMyAdsTapped) {
isMyAdsTapped = true;
isExploreAdsTapped = false;
}
setState(() {});
},
),
),
],
Consumer(
builder: (BuildContext context, AdVM adVM, Widget? child) {
return Row(
children: [
Expanded(
child: ShowFillButton(
isFilled: adVM.isExploreAdsTapped,
maxHeight: 55,
title: "Explore Ads",
txtColor: adVM.isExploreAdsTapped ? MyColors.white : MyColors.darkTextColor,
onPressed: () {
adVM.updateIsExploreAds(true);
},
),
),
12.width,
Expanded(
child: ShowFillButton(
isFilled: !adVM.isExploreAdsTapped,
txtColor: !adVM.isExploreAdsTapped ? MyColors.white : MyColors.darkTextColor,
maxHeight: 55,
title: "My Ads",
onPressed: () {
adVM.updateIsExploreAds(false);
},
),
),
],
);
},
),
24.height,
Expanded(
child: BuildAdsList(
count: 20,
onAdPressed: () {
navigateWithName(
context,
AppRoutes.adsDetailView,
);
},
child: RefreshIndicator(
onRefresh: () => onRefreshAds(context),
child: Consumer(
builder: (BuildContext context, AdVM adVM, Widget? child) {
return BuildAdsList(
adsList: adVM.isExploreAdsTapped ? adVM.allAds : adVM.myAds,
);
},
),
),
),
],
@ -80,6 +77,8 @@ class _AdsFragmentState extends State<AdsFragment> {
),
floatingActionButton: FloatingActionButton(
onPressed: () {
context.read<AdVM>().getVehicleTypes();
navigateWithName(context, AppRoutes.createAdView);
},
backgroundColor: MyColors.darkPrimaryColor,

@ -1,16 +1,40 @@
import 'dart:async';
import 'package:mc_common_app/views/advertisement/ads_list.dart';
import 'package:flutter/material.dart';
import 'package:mc_common_app/config/routes.dart';
import 'package:mc_common_app/extensions/int_extensions.dart';
import 'package:mc_common_app/utils/navigator.dart';
import 'package:mc_common_app/widgets/common_widgets/ads_list.dart';
import 'package:mc_common_app/view_models/ad_view_model.dart';
import 'package:mc_common_app/widgets/extensions/extensions_widget.dart';
import 'package:mc_common_app/widgets/common_widgets/view_all_widget.dart';
import 'package:mc_common_app/widgets/common_widgets/my_service_provider.dart';
import 'package:mc_common_app/widgets/common_widgets/customer_appointment_slider_widget.dart';
import 'package:provider/provider.dart';
class HomeFragment extends StatelessWidget {
class HomeFragment extends StatefulWidget {
const HomeFragment({Key? key}) : super(key: key);
@override
State<HomeFragment> createState() => _HomeFragmentState();
}
class _HomeFragmentState extends State<HomeFragment> {
@override
void initState() {
scheduleMicrotask(() async {
await _onRefresh();
});
super.initState();
}
Future<void> _onRefresh() async {
AdVM adVm = Provider.of<AdVM>(context, listen: false);
if (adVm.myAds.isEmpty) {
await adVm.getMyAds();
}
if (adVm.allAds.isEmpty) {
await adVm.getAllAds();
}
}
@override
Widget build(BuildContext context) {
return SizedBox(
@ -30,29 +54,24 @@ class HomeFragment extends StatelessWidget {
const ServiceProviderWidget().horPaddingMain(),
15.height,
ViewAllWidget(title: "My Active Ads".toUpperCase(), subTitle: "View All").horPaddingMain(),
// todo: we will replace this count with the sublist of ads
BuildAdsList(
count: 1,
scrollPhysics: NeverScrollableScrollPhysics(),
onAdPressed: () {
navigateWithName(
context,
AppRoutes.adsDetailView,
);
Consumer(
builder: (BuildContext context, AdVM adVM, Widget? child) {
return BuildAdsList(
adsList: adVM.myAds,
scrollPhysics: NeverScrollableScrollPhysics(),
).horPaddingMain();
},
).horPaddingMain(),
),
20.height,
ViewAllWidget(title: "My Recommended Ads".toUpperCase(), subTitle: "View All").horPaddingMain(),
BuildAdsList(
count: 2,
scrollPhysics: NeverScrollableScrollPhysics(),
onAdPressed: () {
navigateWithName(
context,
AppRoutes.adsDetailView,
);
Consumer(
builder: (BuildContext context, AdVM adVM, Widget? child) {
return BuildAdsList(
adsList: adVM.allAds,
scrollPhysics: NeverScrollableScrollPhysics(),
).horPaddingMain();
},
).horPaddingMain(),
),
],
),
),

Loading…
Cancel
Save