129 lines
5.1 KiB
Dart
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())));
|
|
}
|
|
}
|