diff --git a/doc/documentation.md b/doc/documentation.md index 9d958f45..4288ec7a 100644 --- a/doc/documentation.md +++ b/doc/documentation.md @@ -658,6 +658,7 @@ Default hour indicator settings. * To customise timeline use `timeLineBuilder`. * To change Hour lines color use `HourIndicatorSettings`. * To style hours, half hours & quarter hours use `HourIndicatorSettings`. Default color used is `surfaceContainerHighest` +* To customise divider between weekdays and full-day events use `dividerSettings`. ```dart hourIndicatorSettings: HourIndicatorSettings( @@ -669,6 +670,16 @@ Default hour indicator settings. color: Colors.redAccent, lineStyle: LineStyle.dashed, ), + dividerSettings: DividerSettings( + thickness: 2, + height: 2, + color: Colors.blueAccent, + ), +``` + +Hide divider in week view. +```dart + dividerSettings: DividerSettings.none(), ``` ### Month view diff --git a/lib/src/modals.dart b/lib/src/modals.dart index 79213bd0..0ffd0644 100644 --- a/lib/src/modals.dart +++ b/lib/src/modals.dart @@ -33,6 +33,32 @@ class HourIndicatorSettings { ); } +/// Settings for divider between FullDay events and weekdays header +class DividerSettings { + /// Thickness of the divider line + final double thickness; + + /// Height of the divider + final double height; + + /// Color of the divider line + final Color color; + + /// Settings for divider between FullDay events and weekdays header + const DividerSettings({ + this.thickness = 1.0, + this.height = 1.0, + this.color = Colors.grey, + }) : assert(thickness >= 0, "Thickness must be greater than or equal to 0."), + assert(height >= 0, "Height must be greater than or equal to 0."); + + factory DividerSettings.none() => DividerSettings( + color: Colors.transparent, + thickness: 0.0, + height: 0.0, + ); +} + /// Settings for live time line class LiveTimeIndicatorSettings { /// Color of time indicator. diff --git a/lib/src/multi_day_view/_internal_multi_day_view_page.dart b/lib/src/multi_day_view/_internal_multi_day_view_page.dart index d5140fca..0164fc86 100644 --- a/lib/src/multi_day_view/_internal_multi_day_view_page.dart +++ b/lib/src/multi_day_view/_internal_multi_day_view_page.dart @@ -48,6 +48,9 @@ class InternalMultiDayViewPage extends StatefulWidget { /// Settings for quarter hour indicator lines. final HourIndicatorSettings quarterHourIndicatorSettings; + /// Settings for divider between weekdays and full-day events. + final DividerSettings dividerSettings; + /// Flag to display live line. final bool showLiveLine; @@ -186,6 +189,7 @@ class InternalMultiDayViewPage extends StatefulWidget { required this.hourLinePainter, required this.halfHourIndicatorSettings, required this.quarterHourIndicatorSettings, + required this.dividerSettings, required this.showLiveLine, required this.liveTimeIndicatorSettings, required this.heightPerMinute, @@ -297,9 +301,9 @@ class _InternalMultiDayViewPageState ), if (widget.showMutliDayBottomLine) Divider( - thickness: 1, - height: 1, - color: themeColor.borderColor, + thickness: widget.dividerSettings.thickness, + height: widget.dividerSettings.height, + color: widget.dividerSettings.color, ), SizedBox( width: widget.width, diff --git a/lib/src/multi_day_view/multi_day_view.dart b/lib/src/multi_day_view/multi_day_view.dart index 6619b9f2..8970b4dc 100644 --- a/lib/src/multi_day_view/multi_day_view.dart +++ b/lib/src/multi_day_view/multi_day_view.dart @@ -93,6 +93,9 @@ class MultiDayView extends StatefulWidget { /// Settings for quarter hour indicator settings. final HourIndicatorSettings? quarterHourIndicatorSettings; + /// Settings for divider between weekdays and full-day events. + final DividerSettings? dividerSettings; + /// Settings for live time indicator settings. final LiveTimeIndicatorSettings? liveTimeIndicatorSettings; @@ -266,6 +269,7 @@ class MultiDayView extends StatefulWidget { this.hourLinePainter, this.halfHourIndicatorSettings, this.quarterHourIndicatorSettings, + this.dividerSettings, this.timeLineBuilder, this.timeLineWidth, this.liveTimeIndicatorSettings, @@ -361,6 +365,7 @@ class MultiDayViewState extends State> { late HourIndicatorSettings _halfHourIndicatorSettings; late LiveTimeIndicatorSettings _liveTimeIndicatorSettings; late HourIndicatorSettings _quarterHourIndicatorSettings; + late DividerSettings _dividerSettings; late PageController _pageController; @@ -559,6 +564,7 @@ class MultiDayViewState extends State> { _halfHourIndicatorSettings, quarterHourIndicatorSettings: _quarterHourIndicatorSettings, + dividerSettings: _dividerSettings, dates: dates, showLiveLine: widget.showLiveTimeLineInAllDays || _showLiveTimeIndicator(dates), @@ -682,6 +688,11 @@ class MultiDayViewState extends State> { assert(_quarterHourIndicatorSettings.height < _hourHeight, "quarterHourIndicator height must be less than minuteHeight * 60"); + + _dividerSettings = widget.dividerSettings ?? + DividerSettings( + color: context.multiDayViewTheme.borderColor, + ); } void _calculateHeights() { diff --git a/lib/src/week_view/_internal_week_view_page.dart b/lib/src/week_view/_internal_week_view_page.dart index d616731f..5bf6f099 100644 --- a/lib/src/week_view/_internal_week_view_page.dart +++ b/lib/src/week_view/_internal_week_view_page.dart @@ -42,6 +42,9 @@ class InternalWeekViewPage extends StatefulWidget { /// Settings for quarter hour indicator lines. final HourIndicatorSettings quarterHourIndicatorSettings; + /// Settings for divider between FullDay events and weekdays header. + final DividerSettings dividerSettings; + /// Flag to display live line. final bool showLiveLine; @@ -183,6 +186,7 @@ class InternalWeekViewPage extends StatefulWidget { required this.hourLinePainter, required this.halfHourIndicatorSettings, required this.quarterHourIndicatorSettings, + required this.dividerSettings, required this.showLiveLine, required this.liveTimeIndicatorSettings, required this.heightPerMinute, @@ -296,9 +300,9 @@ class _InternalWeekViewPageState ), ), Divider( - thickness: 1, - height: 1, - color: themeColor.borderColor, + thickness: widget.dividerSettings.thickness, + height: widget.dividerSettings.height, + color: widget.dividerSettings.color, ), SizedBox( width: widget.width, diff --git a/lib/src/week_view/week_view.dart b/lib/src/week_view/week_view.dart index de065c1c..6bd99b03 100644 --- a/lib/src/week_view/week_view.dart +++ b/lib/src/week_view/week_view.dart @@ -93,6 +93,9 @@ class WeekView extends StatefulWidget { /// Settings for quarter hour indicator settings. final HourIndicatorSettings? quarterHourIndicatorSettings; + /// Settings for divider between FullDay events and weekdays header. + final DividerSettings? dividerSettings; + /// Settings for live time indicator settings. final LiveTimeIndicatorSettings? liveTimeIndicatorSettings; @@ -263,6 +266,7 @@ class WeekView extends StatefulWidget { this.hourLinePainter, this.halfHourIndicatorSettings, this.quarterHourIndicatorSettings, + this.dividerSettings, this.timeLineBuilder, this.timeLineWidth, this.liveTimeIndicatorSettings, @@ -357,6 +361,7 @@ class WeekViewState extends State> { late HourIndicatorSettings _halfHourIndicatorSettings; late LiveTimeIndicatorSettings _liveTimeIndicatorSettings; late HourIndicatorSettings _quarterHourIndicatorSettings; + late DividerSettings _dividerSettings; late PageController _pageController; @@ -548,6 +553,7 @@ class WeekViewState extends State> { halfHourIndicatorSettings: _halfHourIndicatorSettings, quarterHourIndicatorSettings: _quarterHourIndicatorSettings, + dividerSettings: _dividerSettings, dates: dates, showLiveLine: widget.showLiveTimeLineInAllDays || _showLiveTimeIndicator(dates), @@ -669,6 +675,11 @@ class WeekViewState extends State> { assert(_quarterHourIndicatorSettings.height < _hourHeight, "quarterHourIndicator height must be less than minuteHeight * 60"); + + _dividerSettings = widget.dividerSettings ?? + DividerSettings( + color: context.multiDayViewTheme.borderColor, + ); } void _calculateHeights() {