Files
intaleq/packages/calendar_builder/example/lib/customized_month_builder.dart
2026-04-16 19:45:03 +03:00

129 lines
5.1 KiB
Dart

import 'package:calendar_builder/calendar_builder.dart';
import 'package:flutter/material.dart';
class CustomizedMonthBuilderScreen extends StatefulWidget {
const CustomizedMonthBuilderScreen({Key? key}) : super(key: key);
@override
State<CustomizedMonthBuilderScreen> createState() =>
_CustomizedMonthBuilderScreenState();
}
class _CustomizedMonthBuilderScreenState
extends State<CustomizedMonthBuilderScreen> {
bool isDarkMode = true;
@override
Widget build(BuildContext context) {
return Theme(
data: isDarkMode ? ThemeData.dark() : ThemeData.light(),
child: Scaffold(
body: SafeArea(
child: Column(
children: [
Expanded(
child: CbMonthBuilder(
cbConfig: CbConfig(
startDate: DateTime(2020),
endDate: DateTime(2123),
selectedDate: DateTime(2022, 3, 4),
selectedYear: DateTime(2022),
weekStartsFrom: WeekStartsFrom.wednesday,
disabledDates: [
DateTime(2022, 1, 7),
DateTime(2022, 1, 9),
],
eventDates: [
DateTime(2022, 1, 2),
DateTime(2022, 1, 2),
DateTime(2022, 1, 3)
],
highlightedDates: [
DateTime(2022, 1, 6),
DateTime(2022, 1, 3)
]),
monthCustomizer: MonthCustomizer(
padding: const EdgeInsets.all(20),
monthHeaderCustomizer: MonthHeaderCustomizer(
textStyle: const TextStyle(
color: Colors.red,
fontSize: 22,
fontWeight: FontWeight.bold,
),
),
monthButtonCustomizer: MonthButtonCustomizer(
currentDayColor: Colors.orange,
borderStrokeWidth: 2,
textStyleOnDisabled:
const TextStyle(color: Colors.red),
highlightedColor:
const Color.fromARGB(255, 255, 174, 0)),
monthWeekCustomizer: MonthWeekCustomizer(
textStyle: const TextStyle(
color: Color.fromARGB(255, 255, 174, 0)))
// monthWidth: 500,
// monthHeight: 200
),
yearDropDownCustomizer: YearDropDownCustomizer(
yearButtonCustomizer: YearButtonCustomizer(
borderColorOnSelected: Colors.red,
),
yearHeaderCustomizer: YearHeaderCustomizer(
titleTextStyle: const TextStyle(
color: Color.fromARGB(255, 255, 174, 0)))),
onYearHeaderExpanded: (isExpanded) {
snackBar('isExpanded ' + isExpanded.toString());
},
onDateClicked: (onDateClicked) {
snackBar('selected date' +
onDateClicked.selectedDate.toString() +
'\n' +
'isSelected ' +
onDateClicked.isSelected.toString() +
'\n' +
'isHighlighted ' +
onDateClicked.isHighlighted.toString() +
'\n' +
'hasEvent ' +
onDateClicked.hasEvent.toString() +
'\n' +
'isCurrentDate ' +
onDateClicked.isCurrentDate.toString() +
'\n' +
'isDisabled ' +
onDateClicked.isDisabled.toString());
},
onYearButtonClicked: (year, isSelected) {
snackBar('selected year ' +
year.toString() +
'\n' +
'isSelected ' +
isSelected.toString());
}),
)
],
),
),
floatingActionButton: FloatingActionButton.extended(
onPressed: () {
isDarkMode = !isDarkMode;
setState(() {});
},
isExtended: true,
label: Row(
children: [
Icon(!isDarkMode ? Icons.dark_mode : Icons.light_mode),
Text(!isDarkMode ? ' Dark Mode' : ' Light Mode')
],
),
),
),
);
}
void snackBar(Object meg) {
ScaffoldMessenger.of(context)
..hideCurrentSnackBar()
..showSnackBar(SnackBar(content: Text(meg.toString())));
}
}