import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:table_calendar/table_calendar.dart'; class CalendarPage extends StatefulWidget { @override State createState() { return _CalendarPage(); } } class _CalendarPage extends State with TickerProviderStateMixin { AnimationController _animationController; CalendarController _calendarController; @override void initState() { super.initState(); _calendarController = CalendarController(); _animationController = AnimationController( vsync: this, duration: const Duration(milliseconds: 400), ); _animationController.forward(); } @override void dispose() { _animationController.dispose(); _calendarController.dispose(); super.dispose(); } void _onDaySelected(DateTime day, List events, List holidays) { print('CALLBACK: _onDaySelected'); } void _onVisibleDaysChanged(DateTime first, DateTime last, CalendarFormat format) { print('CALLBACK: _onVisibleDaysChanged'); } void _onCalendarCreated(DateTime first, DateTime last, CalendarFormat format) { print('CALLBACK: _onCalendarCreated'); } @override Widget build(BuildContext context) { return Container( child: Column( mainAxisSize: MainAxisSize.max, children: [ _buildTableCalendar(), ], ), ); } Widget _buildTableCalendar() { return TableCalendar( calendarController: _calendarController, startingDayOfWeek: StartingDayOfWeek.monday, availableGestures: AvailableGestures.none, headerStyle: HeaderStyle( centerHeaderTitle: false, leftChevronVisible: false, rightChevronVisible: false, formatButtonVisible: false, ), calendarStyle: CalendarStyle( outsideDaysVisible: false, selectedColor: Color(0xFF32A060), weekendStyle: TextStyle().copyWith(color: Color(0xFF333333)), todayColor: Color(0xFFD5EBDE), ), daysOfWeekStyle: DaysOfWeekStyle( weekendStyle: TextStyle().copyWith(color: Color(0xFF4D4D4D)), ), onDaySelected: _onDaySelected, onVisibleDaysChanged: _onVisibleDaysChanged, onCalendarCreated: _onCalendarCreated, ); } }