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

@ -1,6 +1,5 @@
import 'package:car_customer_app/config/customer_dependencies.dart'; import 'package:car_customer_app/config/customer_dependencies.dart';
import 'package:car_customer_app/config/customer_routes.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:car_customer_app/view_models/dashboard_view_model.dart';
import 'package:easy_localization/easy_localization.dart'; import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.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/models/post_params_model.dart';
import 'package:mc_common_app/repositories/user_repo.dart'; import 'package:mc_common_app/repositories/user_repo.dart';
import 'package:mc_common_app/utils/enums.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/base_view_model.dart';
import 'package:mc_common_app/view_models/user_view_model.dart'; import 'package:mc_common_app/view_models/user_view_model.dart';
import 'package:mc_common_app/widgets/extensions/extensions_widget.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/provider.dart';
import 'package:provider/single_child_widget.dart'; import 'package:provider/single_child_widget.dart';
import 'package:mc_common_app/repositories/common_repo.dart';
Future<void> main() async { Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized(); WidgetsFlutterBinding.ensureInitialized();
CustomerDependencies.addDependencies(); CustomerDependencies.addDependencies();
@ -42,7 +44,7 @@ Future<void> main() async {
create: (_) => UserVM(userRepo: injector.get<UserRepo>()), create: (_) => UserVM(userRepo: injector.get<UserRepo>()),
), ),
ChangeNotifierProvider<AdVM>( ChangeNotifierProvider<AdVM>(
create: (_) => AdVM(commonServices: injector.get<CommonServices>()), create: (_) => AdVM(commonServices: injector.get<CommonServices>(), commonRepo: injector.get<CommonRepo>()),
), ),
], ],
child: const MyApp(), 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/extensions/int_extensions.dart';
import 'package:mc_common_app/theme/colors.dart'; import 'package:mc_common_app/theme/colors.dart';
import 'package:mc_common_app/utils/navigator.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/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 class AdsFragment extends StatelessWidget {
State<AdsFragment> createState() => _AdsFragmentState(); AdsFragment({Key? key}) : super(key: key);
}
class _AdsFragmentState extends State<AdsFragment> {
bool isExploreAdsTapped = true;
bool isMyAdsTapped = false; Future<void> onRefreshAds(BuildContext context) async {
AdVM adVM = context.read<AdVM>();
await adVM.getAllAds();
await adVM.getMyAds();
}
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
@ -28,51 +28,48 @@ class _AdsFragmentState extends State<AdsFragment> {
child: Column( child: Column(
children: [ children: [
16.height, 16.height,
Row( Consumer(
children: [ builder: (BuildContext context, AdVM adVM, Widget? child) {
Expanded( return Row(
child: ShowFillButton( children: [
isFilled: isExploreAdsTapped, Expanded(
maxHeight: 55, child: ShowFillButton(
title: "Explore Ads", isFilled: adVM.isExploreAdsTapped,
txtColor: isExploreAdsTapped ? MyColors.white : MyColors.darkTextColor, maxHeight: 55,
onPressed: () { title: "Explore Ads",
if (!isExploreAdsTapped) { txtColor: adVM.isExploreAdsTapped ? MyColors.white : MyColors.darkTextColor,
isExploreAdsTapped = true; onPressed: () {
isMyAdsTapped = false; adVM.updateIsExploreAds(true);
} },
setState(() {}); ),
}, ),
), 12.width,
), Expanded(
12.width, child: ShowFillButton(
Expanded( isFilled: !adVM.isExploreAdsTapped,
child: ShowFillButton( txtColor: !adVM.isExploreAdsTapped ? MyColors.white : MyColors.darkTextColor,
isFilled: isMyAdsTapped, maxHeight: 55,
txtColor: isMyAdsTapped ? MyColors.white : MyColors.darkTextColor, title: "My Ads",
maxHeight: 55, onPressed: () {
title: "My Ads", adVM.updateIsExploreAds(false);
onPressed: () { },
if (!isMyAdsTapped) { ),
isMyAdsTapped = true; ),
isExploreAdsTapped = false; ],
} );
setState(() {}); },
},
),
),
],
), ),
24.height, 24.height,
Expanded( Expanded(
child: BuildAdsList( child: RefreshIndicator(
count: 20, onRefresh: () => onRefreshAds(context),
onAdPressed: () { child: Consumer(
navigateWithName( builder: (BuildContext context, AdVM adVM, Widget? child) {
context, return BuildAdsList(
AppRoutes.adsDetailView, adsList: adVM.isExploreAdsTapped ? adVM.allAds : adVM.myAds,
); );
}, },
),
), ),
), ),
], ],
@ -80,6 +77,8 @@ class _AdsFragmentState extends State<AdsFragment> {
), ),
floatingActionButton: FloatingActionButton( floatingActionButton: FloatingActionButton(
onPressed: () { onPressed: () {
context.read<AdVM>().getVehicleTypes();
navigateWithName(context, AppRoutes.createAdView); navigateWithName(context, AppRoutes.createAdView);
}, },
backgroundColor: MyColors.darkPrimaryColor, 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: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/extensions/int_extensions.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/common_widgets/ads_list.dart';
import 'package:mc_common_app/widgets/extensions/extensions_widget.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/view_all_widget.dart';
import 'package:mc_common_app/widgets/common_widgets/my_service_provider.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: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); 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 @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return SizedBox( return SizedBox(
@ -30,29 +54,24 @@ class HomeFragment extends StatelessWidget {
const ServiceProviderWidget().horPaddingMain(), const ServiceProviderWidget().horPaddingMain(),
15.height, 15.height,
ViewAllWidget(title: "My Active Ads".toUpperCase(), subTitle: "View All").horPaddingMain(), ViewAllWidget(title: "My Active Ads".toUpperCase(), subTitle: "View All").horPaddingMain(),
// todo: we will replace this count with the sublist of ads Consumer(
BuildAdsList( builder: (BuildContext context, AdVM adVM, Widget? child) {
count: 1, return BuildAdsList(
scrollPhysics: NeverScrollableScrollPhysics(), adsList: adVM.myAds,
onAdPressed: () { scrollPhysics: NeverScrollableScrollPhysics(),
navigateWithName( ).horPaddingMain();
context,
AppRoutes.adsDetailView,
);
}, },
).horPaddingMain(), ),
20.height, 20.height,
ViewAllWidget(title: "My Recommended Ads".toUpperCase(), subTitle: "View All").horPaddingMain(), ViewAllWidget(title: "My Recommended Ads".toUpperCase(), subTitle: "View All").horPaddingMain(),
BuildAdsList( Consumer(
count: 2, builder: (BuildContext context, AdVM adVM, Widget? child) {
scrollPhysics: NeverScrollableScrollPhysics(), return BuildAdsList(
onAdPressed: () { adsList: adVM.allAds,
navigateWithName( scrollPhysics: NeverScrollableScrollPhysics(),
context, ).horPaddingMain();
AppRoutes.adsDetailView,
);
}, },
).horPaddingMain(), ),
], ],
), ),
), ),

Loading…
Cancel
Save