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,6 +25,7 @@ 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),
), ),
if (fill)
PositionedDirectional( PositionedDirectional(
bottom: 16.toScreenHeight, bottom: 16.toScreenHeight,
end: 16.toScreenWidth, end: 16.toScreenWidth,

@ -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,35 +19,66 @@ 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(
firstDay: _firstDate,
lastDay: _lastDate,
focusedDay: _initialDate,
calendarFormat: CalendarFormat.month, calendarFormat: CalendarFormat.month,
weekendDays: const [], weekendDays: const [],
rowHeight: 45, rowHeight: 45,
availableGestures: AvailableGestures.none, availableGestures: AvailableGestures.none,
onCalendarCreated: (controller) {
_controller = controller;
},
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 {
final result = await showDatePicker(
context: context,
initialDate: _initialDate,
firstDate: _firstDate,
lastDate: _lastDate,
initialDatePickerMode: DatePickerMode.year,
);
await snapshot.getCalenderRequests(from: DateTime(result.year, result.month), to: DateTime.now());
if (result != null) {
_initialDate = result;
setState(() {});
}
}),
dowBuilder: (context, dateTime) { dowBuilder: (context, dateTime) {
final day = DateFormat("EE").format(dateTime).toUpperCase(); final day = DateFormat("EE").format(dateTime).toUpperCase();
return Align(alignment: Alignment.center, child: day.bodyText(context).custom(color: AppColor.neutral50)); return Align(alignment: Alignment.center, child: day.bodyText(context).custom(color: AppColor.neutral50));
}, },
defaultBuilder: (context, dateTime, _) { defaultBuilder: (context, dateTime, _) {
final day = DateFormat("d").format(dateTime); final day = DateFormat("d").format(dateTime);
return CalendarDaysCard(day: day); 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, daysOfWeekHeight: 35.toScreenHeight,
@ -61,6 +94,7 @@ class _MonthlyFragmentState extends State<MonthlyFragment> {
defaultDecoration: const BoxDecoration(shape: BoxShape.circle, color: AppColor.neutral30), defaultDecoration: const BoxDecoration(shape: BoxShape.circle, color: AppColor.neutral30),
), ),
), ),
),
Column( Column(
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
children: [ children: [
@ -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,18 +43,19 @@ 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, _) {
return Column(
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
children: [ children: [
TableCalendar( snapshot.isCalendarLoading
firstDay: DateTime.utc(2010, 10, 16), ? const Center(child: CircularProgressIndicator())
lastDay: DateTime.utc(2030, 3, 14), : TableCalendar(
focusedDay: DateTime.now(), firstDay: _firstDate,
lastDay: _lastDate,
focusedDay: _initialDate,
calendarFormat: CalendarFormat.week, calendarFormat: CalendarFormat.week,
weekendDays: const [], weekendDays: const [],
onCalendarCreated: (controller) { onCalendarCreated: (controller) {},
_controller = controller;
},
calendarBuilders: CalendarBuilders( calendarBuilders: CalendarBuilders(
headerTitleBuilder: (context, dateTime) => Column( headerTitleBuilder: (context, dateTime) => Column(
crossAxisAlignment: CrossAxisAlignment.stretch, crossAxisAlignment: CrossAxisAlignment.stretch,
@ -61,7 +71,14 @@ class _WeeklyFragmentState extends State<WeeklyFragment> {
}, },
defaultBuilder: (context, dateTime, _) { defaultBuilder: (context, dateTime, _) {
final day = DateFormat("d").format(dateTime); final day = DateFormat("d").format(dateTime);
return CalendarDaysCard(day: day); 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, daysOfWeekHeight: 35.toScreenHeight,
@ -72,6 +89,35 @@ class _WeeklyFragmentState extends State<WeeklyFragment> {
defaultDecoration: const BoxDecoration(shape: BoxShape.circle, color: AppColor.neutral30), 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,
),
// TableCalendar( // TableCalendar(
// headerVisible: false, // headerVisible: false,
// calendarFormat: CalendarFormat.week, // calendarFormat: CalendarFormat.week,
@ -94,8 +140,9 @@ class _WeeklyFragmentState extends State<WeeklyFragment> {
// availableGestures: AvailableGestures.none, // availableGestures: AvailableGestures.none,
// ), // ),
], ],
).toShadowContainer(context), ).toShadowContainer(context);
); }),
).paddingOnly(start: 16, end: 16);
} }
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