summaryrefslogtreecommitdiffstats
path: root/packages/flutter_calendar_carousel/lib/src
diff options
context:
space:
mode:
authorJoel Winarske <joel.winarske@gmail.com>2024-09-05 14:01:44 -0700
committerScott Murray <scott.murray@konsulko.com>2024-09-09 15:37:22 +0000
commit0c24d7f6ebdb688d3aee492b5f84aa21e141f7e7 (patch)
treeae7dd19be2f0b482d8c58236822d7992888b0e71 /packages/flutter_calendar_carousel/lib/src
parentcbc46db4690b89d2d5e983821d269931a358e508 (diff)
-add flutter_calendar_carousel as local package, and update intl version -address most of the analyze issues; not including flutter_calendar_carousel -update all packages Change-Id: I5db9234726e8e2f8d07e1431e8dac2787c521c08 Signed-off-by: Joel Winarske <joel.winarske@gmail.com> Signed-off-by: Joel Winarske <joel.winarske@toyotaconnected.com> Signed-off-by: Joel Winarske <joel.winarske@gmail.com> (cherry picked from commit d3ea8d7fa4518c258fca3c825ee895487fcaa8ec)
Diffstat (limited to 'packages/flutter_calendar_carousel/lib/src')
-rw-r--r--packages/flutter_calendar_carousel/lib/src/calendar_header.dart73
-rw-r--r--packages/flutter_calendar_carousel/lib/src/default_styles.dart48
-rw-r--r--packages/flutter_calendar_carousel/lib/src/weekday_row.dart131
3 files changed, 252 insertions, 0 deletions
diff --git a/packages/flutter_calendar_carousel/lib/src/calendar_header.dart b/packages/flutter_calendar_carousel/lib/src/calendar_header.dart
new file mode 100644
index 0000000..7fcfd81
--- /dev/null
+++ b/packages/flutter_calendar_carousel/lib/src/calendar_header.dart
@@ -0,0 +1,73 @@
+import 'package:flutter/material.dart';
+import 'default_styles.dart' show defaultHeaderTextStyle;
+
+class CalendarHeader extends StatelessWidget {
+ /// Passing in values for [leftButtonIcon] or [rightButtonIcon] will override [headerIconColor]
+ CalendarHeader(
+ {required this.headerTitle,
+ this.headerMargin,
+ required this.showHeader,
+ this.headerTextStyle,
+ this.showHeaderButtons = true,
+ this.headerIconColor,
+ this.leftButtonIcon,
+ this.rightButtonIcon,
+ required this.onLeftButtonPressed,
+ required this.onRightButtonPressed,
+ this.onHeaderTitlePressed})
+ : isTitleTouchable = onHeaderTitlePressed != null;
+
+ final String headerTitle;
+ final EdgeInsetsGeometry? headerMargin;
+ final bool showHeader;
+ final TextStyle? headerTextStyle;
+ final bool showHeaderButtons;
+ final Color? headerIconColor;
+ final Widget? leftButtonIcon;
+ final Widget? rightButtonIcon;
+ final VoidCallback onLeftButtonPressed;
+ final VoidCallback onRightButtonPressed;
+ final bool isTitleTouchable;
+ final VoidCallback? onHeaderTitlePressed;
+
+ TextStyle get getTextStyle => headerTextStyle ?? defaultHeaderTextStyle;
+
+ Widget _leftButton() => IconButton(
+ onPressed: onLeftButtonPressed,
+ icon:
+ leftButtonIcon ?? Icon(Icons.chevron_left, color: headerIconColor),
+ );
+
+ Widget _rightButton() => IconButton(
+ onPressed: onRightButtonPressed,
+ icon: rightButtonIcon ??
+ Icon(Icons.chevron_right, color: headerIconColor),
+ );
+
+ Widget _headerTouchable() => TextButton(
+ onPressed: onHeaderTitlePressed,
+ child: Text(
+ headerTitle,
+ semanticsLabel: headerTitle,
+ style: getTextStyle,
+ ),
+ );
+
+ @override
+ Widget build(BuildContext context) => showHeader
+ ? Container(
+ margin: headerMargin,
+ child: DefaultTextStyle(
+ style: getTextStyle,
+ child: Row(
+ mainAxisAlignment: MainAxisAlignment.spaceBetween,
+ children: <Widget>[
+ showHeaderButtons ? _leftButton() : Container(),
+ isTitleTouchable
+ ? _headerTouchable()
+ : Text(headerTitle, style: getTextStyle),
+ showHeaderButtons ? _rightButton() : Container(),
+ ])),
+ )
+ : Container();
+}
diff --git a/packages/flutter_calendar_carousel/lib/src/default_styles.dart b/packages/flutter_calendar_carousel/lib/src/default_styles.dart
new file mode 100644
index 0000000..cfeddc9
--- /dev/null
+++ b/packages/flutter_calendar_carousel/lib/src/default_styles.dart
@@ -0,0 +1,48 @@
+import 'package:flutter/material.dart';
+
+const TextStyle defaultHeaderTextStyle = const TextStyle(
+ fontSize: 20.0,
+ color: Colors.blue,
+);
+const TextStyle defaultPrevDaysTextStyle = const TextStyle(
+ color: Colors.grey,
+ fontSize: 14.0,
+);
+const TextStyle defaultNextDaysTextStyle = const TextStyle(
+ color: Colors.grey,
+ fontSize: 14.0,
+);
+const TextStyle defaultDaysTextStyle = const TextStyle(
+ color: Colors.black,
+ fontSize: 14.0,
+);
+const TextStyle defaultTodayTextStyle = const TextStyle(
+ color: Colors.white,
+ fontSize: 14.0,
+);
+const TextStyle defaultSelectedDayTextStyle = const TextStyle(
+ color: Colors.white,
+ fontSize: 14.0,
+);
+const TextStyle defaultWeekdayTextStyle = const TextStyle(
+ color: Colors.deepOrange,
+ fontSize: 14.0,
+);
+const TextStyle defaultWeekendTextStyle = const TextStyle(
+ color: Colors.pinkAccent,
+ fontSize: 14.0,
+);
+const TextStyle defaultInactiveDaysTextStyle = const TextStyle(
+ color: Colors.black38,
+ fontSize: 14.0,
+);
+final TextStyle defaultInactiveWeekendTextStyle = TextStyle(
+ color: Colors.pinkAccent.withOpacity(0.6),
+ fontSize: 14.0,
+);
+final Widget defaultMarkedDateWidget = Container(
+ margin: EdgeInsets.symmetric(horizontal: 1.0),
+ color: Colors.blueAccent,
+ height: 4.0,
+ width: 4.0,
+);
diff --git a/packages/flutter_calendar_carousel/lib/src/weekday_row.dart b/packages/flutter_calendar_carousel/lib/src/weekday_row.dart
new file mode 100644
index 0000000..48f5b3a
--- /dev/null
+++ b/packages/flutter_calendar_carousel/lib/src/weekday_row.dart
@@ -0,0 +1,131 @@
+import 'package:flutter/material.dart';
+import 'package:flutter_calendar_carousel/flutter_calendar_carousel.dart';
+import 'package:flutter_calendar_carousel/src/default_styles.dart'
+ show defaultWeekdayTextStyle;
+import 'package:intl/intl.dart';
+
+class WeekdayRow extends StatelessWidget {
+ WeekdayRow(this.firstDayOfWeek, this.customWeekdayBuilder,
+ {required this.showWeekdays,
+ required this.weekdayFormat,
+ required this.weekdayMargin,
+ required this.weekdayPadding,
+ required this.weekdayBackgroundColor,
+ required this.weekdayTextStyle,
+ required this.localeDate});
+
+ final WeekdayBuilder? customWeekdayBuilder;
+ final bool showWeekdays;
+ final WeekdayFormat weekdayFormat;
+ final EdgeInsets weekdayMargin;
+ final EdgeInsets weekdayPadding;
+ final Color weekdayBackgroundColor;
+ final TextStyle? weekdayTextStyle;
+ final DateFormat localeDate;
+ final int firstDayOfWeek;
+
+ Widget _weekdayContainer(int weekday, String weekDayName) {
+ final customWeekdayBuilder = this.customWeekdayBuilder;
+ return customWeekdayBuilder != null
+ ? customWeekdayBuilder(weekday, weekDayName)
+ : Expanded(
+ child: Container(
+ decoration: BoxDecoration(
+ border: Border.all(color: weekdayBackgroundColor),
+ color: weekdayBackgroundColor,
+ ),
+ margin: weekdayMargin,
+ padding: weekdayPadding,
+ child: Center(
+ child: DefaultTextStyle(
+ style: defaultWeekdayTextStyle,
+ child: Text(
+ weekDayName,
+ semanticsLabel: weekDayName,
+ style: weekdayTextStyle,
+ ),
+ ),
+ ),
+ ));
+ }
+
+// List<Widget> _generateWeekdays() {
+// switch (weekdayFormat) {
+// case WeekdayFormat.weekdays:
+// return localeDate.dateSymbols.WEEKDAYS
+// .map<Widget>(_weekdayContainer)
+// .toList();
+// case WeekdayFormat.standalone:
+// return localeDate.dateSymbols.STANDALONEWEEKDAYS
+// .map<Widget>(_weekdayContainer)
+// .toList();
+// case WeekdayFormat.short:
+// return localeDate.dateSymbols.SHORTWEEKDAYS
+// .map<Widget>(_weekdayContainer)
+// .toList();
+// case WeekdayFormat.standaloneShort:
+// return localeDate.dateSymbols.STANDALONESHORTWEEKDAYS
+// .map<Widget>(_weekdayContainer)
+// .toList();
+// case WeekdayFormat.narrow:
+// return localeDate.dateSymbols.NARROWWEEKDAYS
+// .map<Widget>(_weekdayContainer)
+// .toList();
+// case WeekdayFormat.standaloneNarrow:
+// return localeDate.dateSymbols.STANDALONENARROWWEEKDAYS
+// .map<Widget>(_weekdayContainer)
+// .toList();
+// default:
+// return localeDate.dateSymbols.STANDALONEWEEKDAYS
+// .map<Widget>(_weekdayContainer)
+// .toList();
+// }
+// }
+
+ // TODO - locale issues
+ List<Widget> _renderWeekDays() {
+ List<Widget> list = [];
+
+ /// because of number of days in a week is 7, so it would be easier to count it til 7.
+ for (var i = firstDayOfWeek, count = 0;
+ count < 7;
+ i = (i + 1) % 7, count++) {
+ String weekDay;
+
+ switch (weekdayFormat) {
+ case WeekdayFormat.weekdays:
+ weekDay = localeDate.dateSymbols.WEEKDAYS[i];
+ break;
+ case WeekdayFormat.standalone:
+ weekDay = localeDate.dateSymbols.STANDALONEWEEKDAYS[i];
+ break;
+ case WeekdayFormat.short:
+ weekDay = localeDate.dateSymbols.SHORTWEEKDAYS[i];
+ break;
+ case WeekdayFormat.standaloneShort:
+ weekDay = localeDate.dateSymbols.STANDALONESHORTWEEKDAYS[i];
+ break;
+ case WeekdayFormat.narrow:
+ weekDay = localeDate.dateSymbols.NARROWWEEKDAYS[i];
+ break;
+ case WeekdayFormat.standaloneNarrow:
+ weekDay = localeDate.dateSymbols.STANDALONENARROWWEEKDAYS[i];
+ break;
+ default:
+ weekDay = localeDate.dateSymbols.STANDALONEWEEKDAYS[i];
+ break;
+ }
+ list.add(_weekdayContainer(count, weekDay));
+ }
+
+ return list;
+ }
+
+ @override
+ Widget build(BuildContext context) => showWeekdays
+ ? Row(
+ mainAxisAlignment: MainAxisAlignment.spaceBetween,
+ children: _renderWeekDays(),
+ )
+ : Container();
+}