Calendar API done

main_design2.0
zaid_daoud 2 years ago
parent 29d83101af
commit affb486fbd

@ -13,6 +13,7 @@ class AllRequestsProvider extends ChangeNotifier {
bool isCloseLoading = false; bool isCloseLoading = false;
bool isOverdueLoading = false; bool isOverdueLoading = false;
bool isHighPriorityLoading = false; bool isHighPriorityLoading = false;
bool isCalendarLoading = false;
int stateCode; int stateCode;
@ -22,6 +23,7 @@ class AllRequestsProvider extends ChangeNotifier {
AllRequestsAndCount closeRequests; AllRequestsAndCount closeRequests;
AllRequestsAndCount overdueRequests; AllRequestsAndCount overdueRequests;
AllRequestsAndCount highPriorityRequests; AllRequestsAndCount highPriorityRequests;
AllRequestsAndCount calendarRequests;
void getRequests() { void getRequests() {
getHighPriorityRequests(); getHighPriorityRequests();
@ -61,6 +63,38 @@ class AllRequestsProvider extends ChangeNotifier {
} }
} }
Future<int> getCalenderRequests({@required DateTime from, DateTime to}) async {
if (isCalendarLoading == true) return -2;
isCalendarLoading = true;
if (isCalendarLoading == null) notifyListeners();
Response response;
try {
Map<String, dynamic> body = {
"typeTransaction": [1, 2, 3, 4],
"statusTransaction": [1, 2, 3],
"priority": [0, 1],
"displayData": [],
"from": from.toIso8601String(),
"to": to?.toIso8601String() ?? from.toIso8601String(),
};
response = await ApiManager.instance.post(URLs.getAllRequestsAndCount, body: body);
stateCode = response.statusCode;
if (response.statusCode >= 200 && response.statusCode < 300) {
calendarRequests = AllRequestsAndCount.fromJson(json.decode(response.body)["data"]);
notifyListeners();
}
isCalendarLoading = false;
notifyListeners();
return response.statusCode;
} catch (error) {
isCalendarLoading = false;
stateCode = -1;
notifyListeners();
return -1;
}
}
Future<int> getHighPriorityRequests() async { Future<int> getHighPriorityRequests() async {
if (isHighPriorityLoading == true) return -2; if (isHighPriorityLoading == true) return -2;
isHighPriorityLoading = true; isHighPriorityLoading = true;

@ -10,44 +10,44 @@ class AllRequestsAndCount {
AllRequestsAndCount({this.countServiceRequest, this.countGasRefill, this.countAssetTransfer, this.countPPM, this.detailsStatusTotal, this.total, this.requestsDetails}); AllRequestsAndCount({this.countServiceRequest, this.countGasRefill, this.countAssetTransfer, this.countPPM, this.detailsStatusTotal, this.total, this.requestsDetails});
AllRequestsAndCount.fromJson(Map<String, dynamic> json) { AllRequestsAndCount.fromJson(Map<String, dynamic> json) {
countServiceRequest = json['countServiceRequest'] != null ? new CountServiceRequest.fromJson(json['countServiceRequest']) : null; countServiceRequest = json['countServiceRequest'] != null ? CountServiceRequest.fromJson(json['countServiceRequest']) : null;
countGasRefill = json['countGasRefill'] != null ? new CountServiceRequest.fromJson(json['countGasRefill']) : null; countGasRefill = json['countGasRefill'] != null ? CountServiceRequest.fromJson(json['countGasRefill']) : null;
countAssetTransfer = json['countAssetTransfer'] != null ? new CountServiceRequest.fromJson(json['countAssetTransfer']) : null; countAssetTransfer = json['countAssetTransfer'] != null ? CountServiceRequest.fromJson(json['countAssetTransfer']) : null;
countPPM = json['countPPM'] != null ? new CountServiceRequest.fromJson(json['countPPM']) : null; countPPM = json['countPPM'] != null ? CountServiceRequest.fromJson(json['countPPM']) : null;
detailsStatusTotal = json['detailsStatusTotal'] != null ? new DetailsStatusTotal.fromJson(json['detailsStatusTotal']) : null; detailsStatusTotal = json['detailsStatusTotal'] != null ? DetailsStatusTotal.fromJson(json['detailsStatusTotal']) : null;
total = json['total'] != null ? new CountServiceRequest.fromJson(json['total']) : null; total = json['total'] != null ? CountServiceRequest.fromJson(json['total']) : null;
if (json['requestsDetails'] != null) { if (json['requestsDetails'] != null) {
requestsDetails = <RequestsDetails>[]; requestsDetails = <RequestsDetails>[];
json['requestsDetails'].forEach((v) { json['requestsDetails'].forEach((v) {
requestsDetails.add(new RequestsDetails.fromJson(v)); requestsDetails.add(RequestsDetails.fromJson(v));
}); });
} }
} }
Map<String, dynamic> toJson() { Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>(); final Map<String, dynamic> data = <String, dynamic>{};
if (this.countServiceRequest != null) { if (countServiceRequest != null) {
data['countServiceRequest'] = this.countServiceRequest.toJson(); data['countServiceRequest'] = countServiceRequest.toJson();
} }
if (this.countGasRefill != null) { if (countGasRefill != null) {
data['countGasRefill'] = this.countGasRefill.toJson(); data['countGasRefill'] = countGasRefill.toJson();
} }
if (this.countAssetTransfer != null) { if (countAssetTransfer != null) {
data['countAssetTransfer'] = this.countAssetTransfer.toJson(); data['countAssetTransfer'] = countAssetTransfer.toJson();
} }
if (this.countPPM != null) { if (countPPM != null) {
data['countPPM'] = this.countPPM.toJson(); data['countPPM'] = countPPM.toJson();
} }
if (this.detailsStatusTotal != null) { if (detailsStatusTotal != null) {
data['detailsStatusTotal'] = this.detailsStatusTotal.toJson(); data['detailsStatusTotal'] = detailsStatusTotal.toJson();
} }
if (this.total != null) { if (total != null) {
data['total'] = this.total.toJson(); data['total'] = total.toJson();
} }
if (this.requestsDetails != null) { if (requestsDetails != null) {
data['requestsDetails'] = this.requestsDetails.map((v) => v.toJson()).toList(); data['requestsDetails'] = requestsDetails.map((v) => v.toJson()).toList();
} }
return data; return data;
} }
@ -63,8 +63,8 @@ class CountServiceRequest {
} }
Map<String, dynamic> toJson() { Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>(); final Map<String, dynamic> data = <String, dynamic>{};
data['count'] = this.count; data['count'] = count;
return data; return data;
} }
} }
@ -83,10 +83,10 @@ class DetailsStatusTotal {
} }
Map<String, dynamic> toJson() { Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>(); final Map<String, dynamic> data = <String, dynamic>{};
data['open'] = this.open; data['open'] = open;
data['inProgress'] = this.inProgress; data['inProgress'] = inProgress;
data['closed'] = this.closed; data['closed'] = closed;
return data; return data;
} }
} }
@ -156,26 +156,26 @@ class RequestsDetails {
} }
Map<String, dynamic> toJson() { Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>(); final Map<String, dynamic> data = <String, dynamic>{};
data['id'] = this.id; data['id'] = id;
data['nameOfType'] = this.nameOfType; data['nameOfType'] = nameOfType;
data['priority'] = this.priority; data['priority'] = priority;
data['status'] = this.status; data['status'] = status;
data['assetName'] = this.assetName; data['assetName'] = assetName;
data['assetNo'] = this.assetNo; data['assetNo'] = assetNo;
data['assetSN'] = this.assetSN; data['assetSN'] = assetSN;
data['model'] = this.model; data['model'] = model;
data['supplier'] = this.supplier; data['supplier'] = supplier;
data['manufacturer'] = this.manufacturer; data['manufacturer'] = manufacturer;
data['requestType'] = this.requestType; data['requestType'] = requestType;
data['requestNo'] = this.requestNo; data['requestNo'] = requestNo;
data['gasType'] = this.gasType; data['gasType'] = gasType;
data['site'] = this.site; data['site'] = site;
data['statusReceiver'] = this.statusReceiver; data['statusReceiver'] = statusReceiver;
data['assetTransferFrom'] = this.assetTransferFrom; data['assetTransferFrom'] = assetTransferFrom;
data['assetTransferTo'] = this.assetTransferTo; data['assetTransferTo'] = assetTransferTo;
data['code'] = this.code; data['code'] = code;
data['date'] = this.date; data['date'] = date;
return data; return data;
} }
} }

@ -6,16 +6,13 @@ import '../../../app_style/app_color.dart';
class CalendarDaysCard extends StatelessWidget { class CalendarDaysCard extends StatelessWidget {
final String day; final String day;
const CalendarDaysCard({Key key, @required this.day}) : super(key: key); final bool fill;
const CalendarDaysCard({Key key, @required this.day, this.fill = false}) : super(key: key);
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
final bgColor = day == "1" ? AppColor.neutral30 : (day == "2" ? AppColor.primary40 : AppColor.green50).withOpacity(0.3); final bgColor = fill ? AppColor.primary40.withOpacity(0.3) : AppColor.neutral30;
final dotColor = (day == "1" final dotColor = fill ? AppColor.primary40 : AppColor.green50;
? Colors.transparent
: day == "2"
? AppColor.primary40
: AppColor.green50);
return SizedBox( return SizedBox(
height: 45.toScreenWidth, height: 45.toScreenWidth,
width: 45.toScreenWidth, width: 45.toScreenWidth,
@ -28,11 +25,12 @@ class CalendarDaysCard extends StatelessWidget {
decoration: BoxDecoration(shape: BoxShape.circle, color: bgColor), decoration: BoxDecoration(shape: BoxShape.circle, color: bgColor),
child: day.bodyText(context).custom(color: AppColor.neutral50), child: day.bodyText(context).custom(color: AppColor.neutral50),
), ),
PositionedDirectional( if (fill)
bottom: 16.toScreenHeight, PositionedDirectional(
end: 16.toScreenWidth, bottom: 16.toScreenHeight,
child: CircleAvatar(backgroundColor: dotColor, radius: 2.5), end: 16.toScreenWidth,
), child: CircleAvatar(backgroundColor: dotColor, radius: 2.5),
),
], ],
), ),
); );

@ -1,5 +1,15 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:intl/intl.dart';
import 'package:provider/provider.dart';
import 'package:test_sa/extensions/int_extensions.dart';
import 'package:test_sa/extensions/text_extensions.dart'; 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 '../requests/asset_item_view.dart';
import '../requests/gas_refill_item_view.dart';
import '../requests/ppm_item_view.dart';
import '../requests/service_request_item_view.dart';
class DailyFragment extends StatefulWidget { class DailyFragment extends StatefulWidget {
const DailyFragment({Key key}) : super(key: key); const DailyFragment({Key key}) : super(key: key);
@ -11,11 +21,17 @@ class DailyFragment extends StatefulWidget {
} }
class _DailyFragmentState extends State<DailyFragment> { class _DailyFragmentState extends State<DailyFragment> {
DateTime currentDateTime = DateTime.now(); DateTime _initialDate, _firstDate, _lastDate;
@override @override
void initState() { void initState() {
super.initState(); super.initState();
_initialDate = DateTime.now();
_firstDate = DateTime.utc(2010, 10, 16);
_lastDate = DateTime.utc(2030, 3, 14);
Provider.of<AllRequestsProvider>(context, listen: false).getCalenderRequests(
from: DateTime(DateTime.now().year, DateTime.now().month, DateTime.now().day),
);
} }
@override @override
@ -26,9 +42,46 @@ class _DailyFragmentState extends State<DailyFragment> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return SingleChildScrollView( return SingleChildScrollView(
child: Column( child: Consumer<AllRequestsProvider>(builder: (context, snapshot, _) {
children: ["Daily".heading5(context)], return Column(
), mainAxisSize: MainAxisSize.min,
); crossAxisAlignment: CrossAxisAlignment.stretch,
children: [
snapshot.isCalendarLoading ? const Center(child: CircularProgressIndicator()) : DateFormat("EEEE, d MMMM, yyyy").format(DateTime.now()).heading5(context),
if (snapshot.calendarRequests?.requestsDetails?.isNotEmpty ?? false) const Divider().defaultStyle(context),
ListView.separated(
shrinkWrap: true,
physics: const NeverScrollableScrollPhysics(),
itemBuilder: (cxt, index) {
final list = snapshot.calendarRequests.requestsDetails;
if (snapshot.isCalendarLoading) return const SizedBox().toRequestShimmer(cxt, snapshot.isCalendarLoading);
bool isServiceRequest = list[index].nameOfType == "ServiceRequest";
bool isGasRefill = list[index].nameOfType == "GasRefill";
bool isAssetTransfer = list[index].nameOfType == "AssetTransfer";
bool isPPMs = list[index].nameOfType == "PPMs";
return isServiceRequest
? ServiceRequestItemView(list[index])
: isGasRefill
? GasRefillItemView(list[index])
: isPPMs
? PpmItemView(list[index])
: isAssetTransfer
? AssetItemView(list[index])
: Container(
height: 100,
width: double.infinity,
color: Colors.grey,
);
},
separatorBuilder: (cxt, index) => 8.height,
itemCount: snapshot.isCalendarLoading ? 6 : snapshot.calendarRequests.requestsDetails.length,
),
],
).toShadowContainer(context);
}),
).paddingOnly(start: 16, end: 16);
} }
BoxDecoration cellDecoration({Color color}) => BoxDecoration(color: color ?? Colors.transparent, shape: BoxShape.circle);
} }

@ -1,9 +1,11 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:intl/intl.dart'; import 'package:intl/intl.dart';
import 'package:provider/provider.dart';
import 'package:table_calendar/table_calendar.dart'; import 'package:table_calendar/table_calendar.dart';
import 'package:test_sa/extensions/int_extensions.dart'; import 'package:test_sa/extensions/int_extensions.dart';
import 'package:test_sa/extensions/widget_extensions.dart'; import 'package:test_sa/extensions/widget_extensions.dart';
import '../../../../controllers/providers/api/all_requests_provider.dart';
import '../../../../extensions/text_extensions.dart'; import '../../../../extensions/text_extensions.dart';
import '../../../app_style/app_color.dart'; import '../../../app_style/app_color.dart';
import 'calendar_header.dart'; import 'calendar_header.dart';
@ -17,49 +19,81 @@ class MonthlyFragment extends StatefulWidget {
} }
class _MonthlyFragmentState extends State<MonthlyFragment> { class _MonthlyFragmentState extends State<MonthlyFragment> {
PageController _controller; DateTime _initialDate, _firstDate, _lastDate;
@override
void initState() {
super.initState();
_initialDate = DateTime.now();
_firstDate = DateTime.utc(2010, 10, 16);
_lastDate = DateTime.utc(2030, 3, 14);
Provider.of<AllRequestsProvider>(context, listen: false).getCalenderRequests(
from: DateTime.now().subtract(const Duration(days: 31)),
to: DateTime.now(),
);
}
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return SingleChildScrollView( return SingleChildScrollView(
//physics: BouncingScrollPhysics(),
padding: const EdgeInsets.all(16), padding: const EdgeInsets.all(16),
child: Column( child: Column(
children: [ children: [
TableCalendar( Consumer<AllRequestsProvider>(
firstDay: DateTime.utc(2010, 10, 16), builder: (context, snapshot, _) => snapshot.isCalendarLoading
lastDay: DateTime.utc(2030, 3, 14), ? const Center(child: CircularProgressIndicator())
focusedDay: DateTime.now(), : TableCalendar(
calendarFormat: CalendarFormat.month, firstDay: _firstDate,
weekendDays: const [], lastDay: _lastDate,
rowHeight: 45, focusedDay: _initialDate,
availableGestures: AvailableGestures.none, calendarFormat: CalendarFormat.month,
onCalendarCreated: (controller) { weekendDays: const [],
_controller = controller; rowHeight: 45,
}, availableGestures: AvailableGestures.none,
calendarBuilders: CalendarBuilders( calendarBuilders: CalendarBuilders(
headerTitleBuilder: (context, dateTime) => CalendarHeader(dateFormat: DateFormat("MMMM, yyyy"), dateTime: dateTime), headerTitleBuilder: (context, dateTime) => CalendarHeader(dateFormat: DateFormat("MMMM, yyyy"), dateTime: dateTime).onPress(() async {
dowBuilder: (context, dateTime) { final result = await showDatePicker(
final day = DateFormat("EE").format(dateTime).toUpperCase(); context: context,
return Align(alignment: Alignment.center, child: day.bodyText(context).custom(color: AppColor.neutral50)); initialDate: _initialDate,
}, firstDate: _firstDate,
defaultBuilder: (context, dateTime, _) { lastDate: _lastDate,
final day = DateFormat("d").format(dateTime); initialDatePickerMode: DatePickerMode.year,
return CalendarDaysCard(day: day); );
}, await snapshot.getCalenderRequests(from: DateTime(result.year, result.month), to: DateTime.now());
), if (result != null) {
daysOfWeekHeight: 35.toScreenHeight, _initialDate = result;
headerStyle: const HeaderStyle( setState(() {});
leftChevronVisible: false, }
rightChevronVisible: false, }),
formatButtonVisible: false, dowBuilder: (context, dateTime) {
headerPadding: EdgeInsets.all(0), final day = DateFormat("EE").format(dateTime).toUpperCase();
), return Align(alignment: Alignment.center, child: day.bodyText(context).custom(color: AppColor.neutral50));
calendarStyle: CalendarStyle( },
isTodayHighlighted: false, defaultBuilder: (context, dateTime, _) {
defaultTextStyle: AppTextStyles.bodyText, final day = DateFormat("d").format(dateTime);
defaultDecoration: const BoxDecoration(shape: BoxShape.circle, color: AppColor.neutral30), return CalendarDaysCard(
), day: day,
fill: snapshot.calendarRequests.requestsDetails?.firstWhere(
(element) => (element.date != null) && (DateTime.tryParse(element.date)?.difference(dateTime)?.inDays == 0),
orElse: () => null,
) !=
null,
);
},
),
daysOfWeekHeight: 35.toScreenHeight,
headerStyle: const HeaderStyle(
leftChevronVisible: false,
rightChevronVisible: false,
formatButtonVisible: false,
headerPadding: EdgeInsets.all(0),
),
calendarStyle: CalendarStyle(
isTodayHighlighted: false,
defaultTextStyle: AppTextStyles.bodyText,
defaultDecoration: const BoxDecoration(shape: BoxShape.circle, color: AppColor.neutral30),
),
),
), ),
Column( Column(
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
@ -73,13 +107,15 @@ class _MonthlyFragmentState extends State<MonthlyFragment> {
], ],
), ),
16.height, 16.height,
Row(
children: [ /// TODO : TBD
const CircleAvatar(backgroundColor: AppColor.green50, radius: 8), // Row(
8.width, // children: [
"My Team Requests".heading6(context), // const CircleAvatar(backgroundColor: AppColor.green50, radius: 8),
], // 8.width,
), // "My Team Requests".heading6(context),
// ],
// ),
], ],
), ),
], ],

@ -1,11 +1,17 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:intl/intl.dart'; import 'package:intl/intl.dart';
import 'package:provider/provider.dart';
import 'package:table_calendar/table_calendar.dart'; import 'package:table_calendar/table_calendar.dart';
import 'package:test_sa/extensions/int_extensions.dart'; import 'package:test_sa/extensions/int_extensions.dart';
import 'package:test_sa/extensions/text_extensions.dart'; import 'package:test_sa/extensions/text_extensions.dart';
import 'package:test_sa/extensions/widget_extensions.dart'; import 'package:test_sa/extensions/widget_extensions.dart';
import 'package:test_sa/new_views/app_style/app_color.dart'; import 'package:test_sa/new_views/app_style/app_color.dart';
import '../../../../controllers/providers/api/all_requests_provider.dart';
import '../requests/asset_item_view.dart';
import '../requests/gas_refill_item_view.dart';
import '../requests/ppm_item_view.dart';
import '../requests/service_request_item_view.dart';
import 'calender_days_card.dart'; import 'calender_days_card.dart';
class WeeklyFragment extends StatefulWidget { class WeeklyFragment extends StatefulWidget {
@ -18,12 +24,15 @@ class WeeklyFragment extends StatefulWidget {
} }
class _WeeklyFragmentState extends State<WeeklyFragment> { class _WeeklyFragmentState extends State<WeeklyFragment> {
DateTime currentDateTime = DateTime.now(); DateTime _initialDate, _firstDate, _lastDate;
PageController _controller;
@override @override
void initState() { void initState() {
super.initState(); super.initState();
_initialDate = DateTime.now();
_firstDate = DateTime.utc(2010, 10, 16);
_lastDate = DateTime.utc(2030, 3, 14);
Provider.of<AllRequestsProvider>(context, listen: false).getCalenderRequests(from: DateTime.now().subtract(const Duration(days: 7)), to: DateTime.now());
} }
@override @override
@ -34,68 +43,106 @@ class _WeeklyFragmentState extends State<WeeklyFragment> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return SingleChildScrollView( return SingleChildScrollView(
child: Column( child: Consumer<AllRequestsProvider>(builder: (context, snapshot, _) {
mainAxisSize: MainAxisSize.min, return Column(
children: [ mainAxisSize: MainAxisSize.min,
TableCalendar( children: [
firstDay: DateTime.utc(2010, 10, 16), snapshot.isCalendarLoading
lastDay: DateTime.utc(2030, 3, 14), ? const Center(child: CircularProgressIndicator())
focusedDay: DateTime.now(), : TableCalendar(
calendarFormat: CalendarFormat.week, firstDay: _firstDate,
weekendDays: const [], lastDay: _lastDate,
onCalendarCreated: (controller) { focusedDay: _initialDate,
_controller = controller; calendarFormat: CalendarFormat.week,
}, weekendDays: const [],
calendarBuilders: CalendarBuilders( onCalendarCreated: (controller) {},
headerTitleBuilder: (context, dateTime) => Column( calendarBuilders: CalendarBuilders(
crossAxisAlignment: CrossAxisAlignment.stretch, headerTitleBuilder: (context, dateTime) => Column(
children: [ crossAxisAlignment: CrossAxisAlignment.stretch,
DateFormat("EEEE, d MMMM, yyyy").format(dateTime).heading5(context), children: [
8.height, DateFormat("EEEE, d MMMM, yyyy").format(dateTime).heading5(context),
const Divider().defaultStyle(context), 8.height,
], const Divider().defaultStyle(context),
), ],
dowBuilder: (context, dateTime) { ),
final day = DateFormat("EE").format(dateTime).toUpperCase(); dowBuilder: (context, dateTime) {
return Align(alignment: Alignment.center, child: day.bodyText(context).custom(color: AppColor.neutral50)); final day = DateFormat("EE").format(dateTime).toUpperCase();
}, return Align(alignment: Alignment.center, child: day.bodyText(context).custom(color: AppColor.neutral50));
defaultBuilder: (context, dateTime, _) { },
final day = DateFormat("d").format(dateTime); defaultBuilder: (context, dateTime, _) {
return CalendarDaysCard(day: day); final day = DateFormat("d").format(dateTime);
return CalendarDaysCard(
day: day,
fill: snapshot.calendarRequests.requestsDetails?.firstWhere(
(element) => (element.date != null) && (DateTime.tryParse(element.date)?.difference(dateTime)?.inDays == 0),
orElse: () => null,
) !=
null,
);
},
),
daysOfWeekHeight: 35.toScreenHeight,
headerStyle: const HeaderStyle(leftChevronVisible: false, rightChevronVisible: false, formatButtonVisible: false),
calendarStyle: CalendarStyle(
isTodayHighlighted: false,
defaultTextStyle: AppTextStyles.bodyText,
defaultDecoration: const BoxDecoration(shape: BoxShape.circle, color: AppColor.neutral30),
),
),
if (snapshot.calendarRequests?.requestsDetails?.isNotEmpty ?? false) const Divider().defaultStyle(context),
ListView.separated(
shrinkWrap: true,
physics: const NeverScrollableScrollPhysics(),
itemBuilder: (cxt, index) {
final list = snapshot.calendarRequests.requestsDetails;
if (snapshot.isCalendarLoading) return const SizedBox().toRequestShimmer(cxt, snapshot.isCalendarLoading);
bool isServiceRequest = list[index].nameOfType == "ServiceRequest";
bool isGasRefill = list[index].nameOfType == "GasRefill";
bool isAssetTransfer = list[index].nameOfType == "AssetTransfer";
bool isPPMs = list[index].nameOfType == "PPMs";
return isServiceRequest
? ServiceRequestItemView(list[index])
: isGasRefill
? GasRefillItemView(list[index])
: isPPMs
? PpmItemView(list[index])
: isAssetTransfer
? AssetItemView(list[index])
: Container(
height: 100,
width: double.infinity,
color: Colors.grey,
);
}, },
separatorBuilder: (cxt, index) => 8.height,
itemCount: snapshot.isCalendarLoading ? 6 : snapshot.calendarRequests.requestsDetails.length,
), ),
daysOfWeekHeight: 35.toScreenHeight, // TableCalendar(
headerStyle: const HeaderStyle(leftChevronVisible: false, rightChevronVisible: false, formatButtonVisible: false), // headerVisible: false,
calendarStyle: CalendarStyle( // calendarFormat: CalendarFormat.week,
isTodayHighlighted: false, // firstDay: DateTime.utc(2010, 10, 16),
defaultTextStyle: AppTextStyles.bodyText, // lastDay: DateTime.utc(2030, 3, 14),
defaultDecoration: const BoxDecoration(shape: BoxShape.circle, color: AppColor.neutral30), // focusedDay: currentDateTime,
), // currentDay: currentDateTime,
), // rowHeight: 37,
// TableCalendar( // calendarStyle: CalendarStyle(
// headerVisible: false, // todayDecoration: cellDecoration(),
// calendarFormat: CalendarFormat.week, // todayTextStyle: AppTextStyles.bodyText.copyWith(color: const Color(0xFF2B353E)),
// firstDay: DateTime.utc(2010, 10, 16), // selectedTextStyle: AppTextStyles.bodyText.copyWith(color: const Color(0xFF2B353E)),
// lastDay: DateTime.utc(2030, 3, 14), // rangeStartTextStyle: AppTextStyles.bodyText.copyWith(color: const Color(0xFF2B353E)),
// focusedDay: currentDateTime, // rangeEndTextStyle: AppTextStyles.bodyText.copyWith(color: const Color(0xFF2B353E)),
// currentDay: currentDateTime, // ),
// rowHeight: 37, // daysOfWeekStyle: DaysOfWeekStyle(
// calendarStyle: CalendarStyle( // weekdayStyle: AppTextStyles.bodyText.copyWith(color: AppColor.neutral50),
// todayDecoration: cellDecoration(), // weekendStyle: AppTextStyles.bodyText.copyWith(color: AppColor.neutral50),
// todayTextStyle: AppTextStyles.bodyText.copyWith(color: const Color(0xFF2B353E)), // ),
// selectedTextStyle: AppTextStyles.bodyText.copyWith(color: const Color(0xFF2B353E)), // availableGestures: AvailableGestures.none,
// rangeStartTextStyle: AppTextStyles.bodyText.copyWith(color: const Color(0xFF2B353E)), // ),
// rangeEndTextStyle: AppTextStyles.bodyText.copyWith(color: const Color(0xFF2B353E)), ],
// ), ).toShadowContainer(context);
// daysOfWeekStyle: DaysOfWeekStyle( }),
// weekdayStyle: AppTextStyles.bodyText.copyWith(color: AppColor.neutral50), ).paddingOnly(start: 16, end: 16);
// weekendStyle: AppTextStyles.bodyText.copyWith(color: AppColor.neutral50),
// ),
// availableGestures: AvailableGestures.none,
// ),
],
).toShadowContainer(context),
);
} }
BoxDecoration cellDecoration({Color color}) => BoxDecoration(color: color ?? Colors.transparent, shape: BoxShape.circle); BoxDecoration cellDecoration({Color color}) => BoxDecoration(color: color ?? Colors.transparent, shape: BoxShape.circle);

Loading…
Cancel
Save