diff --git a/lib/controllers/providers/api/all_requests_provider.dart b/lib/controllers/providers/api/all_requests_provider.dart index 4fd19fd9..bc633570 100644 --- a/lib/controllers/providers/api/all_requests_provider.dart +++ b/lib/controllers/providers/api/all_requests_provider.dart @@ -85,6 +85,7 @@ class AllRequestsProvider extends ChangeNotifier { Future getCalenderRequests({@required DateTime from, DateTime to}) async { if (isCalendarLoading == true) return -2; isCalendarLoading = true; + notifyListeners(); if (isCalendarLoading == null) notifyListeners(); Response response; try { diff --git a/lib/new_views/pages/land_page/calendar_page.dart b/lib/new_views/pages/land_page/calendar_page.dart index 9e41d7b0..fe7b63d4 100644 --- a/lib/new_views/pages/land_page/calendar_page.dart +++ b/lib/new_views/pages/land_page/calendar_page.dart @@ -1,4 +1,5 @@ import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; import 'package:test_sa/extensions/context_extension.dart'; import 'package:test_sa/extensions/int_extensions.dart'; import 'package:test_sa/extensions/text_extensions.dart'; @@ -7,6 +8,7 @@ import 'package:test_sa/new_views/app_style/app_color.dart'; import 'package:test_sa/new_views/pages/land_page/calender_fragments/daily_fragment.dart'; import 'package:test_sa/new_views/pages/land_page/calender_fragments/weekly_fragment.dart'; +import '../../../controllers/providers/api/all_requests_provider.dart'; import 'calender_fragments/monthly_fragment.dart'; class CalendarPage extends StatefulWidget { @@ -22,7 +24,7 @@ class _CalendarPageState extends State with SingleTickerProviderSt @override void initState() { super.initState(); - _tabController = TabController(length: 3, vsync: this); + _tabController = TabController(length: 3, vsync: this)..addListener(() {setState(() {});}); } @override @@ -59,9 +61,6 @@ class _CalendarPageState extends State with SingleTickerProviderSt labelStyle: AppTextStyles.bodyText, indicatorPadding: const EdgeInsets.all(4), indicator: BoxDecoration(color: context.isDark ? AppColor.neutral60 : Theme.of(context).cardColor, borderRadius: BorderRadius.circular(13)), - onTap: (index) { - setState(() {}); - }, tabs: [ Tab(text: context.translation.monthly, height: 57.toScreenHeight), Tab(text: context.translation.weekly, height: 57.toScreenHeight), diff --git a/lib/new_views/pages/land_page/calender_fragments/daily_fragment.dart b/lib/new_views/pages/land_page/calender_fragments/daily_fragment.dart index 0e645e0c..bcfa987c 100644 --- a/lib/new_views/pages/land_page/calender_fragments/daily_fragment.dart +++ b/lib/new_views/pages/land_page/calender_fragments/daily_fragment.dart @@ -7,6 +7,8 @@ import 'package:test_sa/extensions/text_extensions.dart'; import 'package:test_sa/extensions/widget_extensions.dart'; import '../../../../controllers/providers/api/all_requests_provider.dart'; +import '../../../../views/widgets/loaders/no_item_found.dart'; +import '../../../app_style/app_color.dart'; import '../requests/asset_item_view.dart'; import '../requests/gas_refill_item_view.dart'; import '../requests/ppm_item_view.dart'; @@ -28,11 +30,6 @@ class _DailyFragmentState extends State { Provider.of(context, listen: false).getCalenderRequests(from: DateTime(DateTime.now().year, DateTime.now().month, DateTime.now().day)); } - @override - void dispose() { - super.dispose(); - } - @override Widget build(BuildContext context) { return SingleChildScrollView( @@ -43,8 +40,9 @@ class _DailyFragmentState extends State { crossAxisAlignment: CrossAxisAlignment.stretch, children: [ DateFormat("EEEE, d MMMM, yyyy", context.isAr ? "ar" : "en").format(DateTime.now()).heading5(context), - if (snapshot.calendarRequests?.requestsDetails?.isNotEmpty ?? false) const Divider().defaultStyle(context), - ListView.separated( + const Divider().defaultStyle(context), + if (snapshot.calendarRequests?.requestsDetails?.isEmpty ?? true) Center(child: context.translation.noDataFound.heading5(context).custom(color: context.isDark ? AppColor.neutral10 : AppColor.neutral50),).paddingOnly(top: 16,bottom: 16), + ListView.separated( shrinkWrap: true, physics: const NeverScrollableScrollPhysics(), itemBuilder: (cxt, index) { diff --git a/lib/new_views/pages/land_page/calender_fragments/weekly_fragment.dart b/lib/new_views/pages/land_page/calender_fragments/weekly_fragment.dart index a0d0952c..bc8c71c7 100644 --- a/lib/new_views/pages/land_page/calender_fragments/weekly_fragment.dart +++ b/lib/new_views/pages/land_page/calender_fragments/weekly_fragment.dart @@ -37,11 +37,6 @@ class _WeeklyFragmentState extends State { .getCalenderRequests(from: DateTime.now().subtract(Duration(days: DateTime.now().weekday)), to: DateTime.now().add(Duration(days: DateTime.daysPerWeek - DateTime.now().weekday - 1))); } - @override - void dispose() { - super.dispose(); - } - @override Widget build(BuildContext context) { return SingleChildScrollView( @@ -58,10 +53,12 @@ class _WeeklyFragmentState extends State { weekendDays: const [], onCalendarCreated: (controller) {}, onPageChanged: (date) { - _initialDate = date; + if(!snapshot.isCalendarLoading){ + _initialDate = date; - Provider.of(context, listen: false) - .getCalenderRequests(from: date.subtract(Duration(days: date.weekday)), to: date.add(Duration(days: DateTime.daysPerWeek - date.weekday - 1))); + Provider.of(context, listen: false) + .getCalenderRequests(from: date.subtract(Duration(days: date.weekday)), to: date.add(Duration(days: DateTime.daysPerWeek - date.weekday - 1))); + } }, calendarBuilders: CalendarBuilders( headerTitleBuilder: (context, dateTime) => Column( @@ -81,12 +78,23 @@ class _WeeklyFragmentState extends State { return CalendarDaysCard( day: day, fill: snapshot.calendarRequests.requestsDetails?.firstWhere( - (element) => (element.date != null) && (DateTime.tryParse(element.date)?.difference(dateTime)?.inDays == 0), + (element) => (element.date != null) && (DateTime.tryParse(element.date).day == (dateTime)?.day), orElse: () => null, ) != null, ).toShimmer(isShow: snapshot.isCalendarLoading); }, + outsideBuilder: (context, dateTime, _) { + final day = DateFormat("d").format(dateTime); + return CalendarDaysCard( + day: day, + fill: snapshot.calendarRequests.requestsDetails?.firstWhere( + (element) => (element.date != null) && (DateTime.tryParse(element.date).day == (dateTime)?.day), + orElse: () => null, + ) != + null, + ).toShimmer(isShow: snapshot.isCalendarLoading); + }, ), daysOfWeekHeight: 35.toScreenHeight, headerStyle: const HeaderStyle(leftChevronVisible: false, rightChevronVisible: false, formatButtonVisible: false),