这是indexloc提供的服务,不要输入任何密码
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,9 @@
## [3.2.0]

* Added loadEventsForDisabledDays property to enable loading events for disabled days as well
* Fixed empty weekendDays assertion issue
* Updated intl version to 0.20.0

## [3.1.3]

* Updated gradle config for example project
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ Add the following line to `pubspec.yaml`:

```yaml
dependencies:
table_calendar: ^3.1.3
table_calendar: ^3.2.0
```

### Basic setup
Expand Down
40 changes: 36 additions & 4 deletions example/pubspec.lock
Original file line number Diff line number Diff line change
Expand Up @@ -59,14 +59,30 @@ packages:
description: flutter
source: sdk
version: "0.0.0"
http:
dependency: transitive
description:
name: http
sha256: b9c29a161230ee03d3ccf545097fccd9b87a5264228c5d348202e0f0c28f9010
url: "https://pub.dev"
source: hosted
version: "1.2.2"
http_parser:
dependency: transitive
description:
name: http_parser
sha256: "2aa08ce0341cc9b354a498388e30986515406668dbcc4f7c950c3e715496693b"
url: "https://pub.dev"
source: hosted
version: "4.0.2"
intl:
dependency: "direct main"
description:
name: intl
sha256: d6f56758b7d3014a48af9701c085700aac781a92a87a62b1333b46d8879661cf
sha256: "00f33b908655e606b86d2ade4710a231b802eec6f11e87e4ea3783fd72077a50"
url: "https://pub.dev"
source: hosted
version: "0.19.0"
version: "0.20.1"
leak_tracker:
dependency: transitive
description:
Expand Down Expand Up @@ -174,7 +190,7 @@ packages:
path: ".."
relative: true
source: path
version: "3.1.3"
version: "3.2.0"
term_glyph:
dependency: transitive
description:
Expand All @@ -191,6 +207,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "0.7.2"
typed_data:
dependency: transitive
description:
name: typed_data
sha256: f9049c039ebfeb4cf7a7104a675823cd72dba8297f264b6637062516699fa006
url: "https://pub.dev"
source: hosted
version: "1.4.0"
vector_math:
dependency: transitive
description:
Expand All @@ -207,6 +231,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "14.2.5"
web:
dependency: transitive
description:
name: web
sha256: cd3543bd5798f6ad290ea73d210f423502e71900302dde696f8bff84bf89a1cb
url: "https://pub.dev"
source: hosted
version: "1.1.0"
sdks:
dart: ">=3.3.0 <4.0.0"
dart: ">=3.5.0 <4.0.0"
flutter: ">=3.18.0-18.0.pre.54"
10 changes: 8 additions & 2 deletions lib/src/table_calendar.dart
Original file line number Diff line number Diff line change
Expand Up @@ -165,6 +165,11 @@ class TableCalendar<T> extends StatefulWidget {
/// * `RangeSelectionMode.enforced` - range selection is always on.
final RangeSelectionMode rangeSelectionMode;

/// Allows to load events for days that are not enabled
/// If `true` it will ignore `enabledDayPredicate` when calling `eventLoader`.
/// If `false` then `enabledDayPredicate` will be used to check when to call `eventLoader`
final bool loadEventsForDisabledDays;

/// Function that assigns a list of events to a specified day.
final List<T> Function(DateTime day)? eventLoader;

Expand Down Expand Up @@ -252,6 +257,7 @@ class TableCalendar<T> extends StatefulWidget {
this.rangeSelectionMode = RangeSelectionMode.toggledOff,
this.eventLoader,
this.enabledDayPredicate,
this.loadEventsForDisabledDays = false,
this.selectedDayPredicate,
this.holidayPredicate,
this.onRangeSelected,
Expand All @@ -267,7 +273,7 @@ class TableCalendar<T> extends StatefulWidget {
}) : assert(availableCalendarFormats.keys.contains(calendarFormat)),
assert(availableCalendarFormats.length <= CalendarFormat.values.length),
assert(
weekendDays.isNotEmpty &&
weekendDays.isEmpty ||
weekendDays.every(
(day) => day >= DateTime.monday && day <= DateTime.sunday,
),
Expand Down Expand Up @@ -642,7 +648,7 @@ class _TableCalendarState<T> extends State<TableCalendar<T>> {

children.add(content);

if (!isDisabled) {
if (widget.loadEventsForDisabledDays || !isDisabled) {
final events = widget.eventLoader?.call(day) ?? [];
Widget? markerWidget =
widget.calendarBuilders.markerBuilder?.call(context, day, events);
Expand Down
38 changes: 35 additions & 3 deletions pubspec.lock
Original file line number Diff line number Diff line change
Expand Up @@ -59,14 +59,30 @@ packages:
description: flutter
source: sdk
version: "0.0.0"
http:
dependency: transitive
description:
name: http
sha256: b9c29a161230ee03d3ccf545097fccd9b87a5264228c5d348202e0f0c28f9010
url: "https://pub.dev"
source: hosted
version: "1.2.2"
http_parser:
dependency: transitive
description:
name: http_parser
sha256: "2aa08ce0341cc9b354a498388e30986515406668dbcc4f7c950c3e715496693b"
url: "https://pub.dev"
source: hosted
version: "4.0.2"
intl:
dependency: "direct main"
description:
name: intl
sha256: d6f56758b7d3014a48af9701c085700aac781a92a87a62b1333b46d8879661cf
sha256: "00f33b908655e606b86d2ade4710a231b802eec6f11e87e4ea3783fd72077a50"
url: "https://pub.dev"
source: hosted
version: "0.19.0"
version: "0.20.1"
leak_tracker:
dependency: transitive
description:
Expand Down Expand Up @@ -192,6 +208,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "0.7.2"
typed_data:
dependency: transitive
description:
name: typed_data
sha256: f9049c039ebfeb4cf7a7104a675823cd72dba8297f264b6637062516699fa006
url: "https://pub.dev"
source: hosted
version: "1.4.0"
vector_math:
dependency: transitive
description:
Expand All @@ -208,6 +232,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "14.2.5"
web:
dependency: transitive
description:
name: web
sha256: cd3543bd5798f6ad290ea73d210f423502e71900302dde696f8bff84bf89a1cb
url: "https://pub.dev"
source: hosted
version: "1.1.0"
sdks:
dart: ">=3.3.0 <4.0.0"
dart: ">=3.5.0 <4.0.0"
flutter: ">=3.18.0-18.0.pre.54"
4 changes: 2 additions & 2 deletions pubspec.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
name: table_calendar
description: Highly customizable, feature-packed calendar widget for Flutter.
version: 3.1.3
version: 3.2.0
author: Aleksander Woźniak <aleksanderwozniak96@gmail.com>
homepage: https://github.com/aleksanderwozniak/table_calendar

Expand All @@ -11,7 +11,7 @@ dependencies:
flutter:
sdk: flutter

intl: ^0.19.0
intl: ^0.20.0
simple_gesture_detector: ^0.2.0

dev_dependencies:
Expand Down
46 changes: 46 additions & 0 deletions test/table_calendar_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -459,6 +459,52 @@ void main() {
},
);

testWidgets(
'Event loader is called for disabled days when loadEventForDisabledDays is set to true',
(tester) async {
final eventDay = DateTime.utc(2021, 7, 20);

await tester.pumpWidget(
setupTestWidget(
TableCalendar(
focusedDay: initialFocusedDay,
loadEventsForDisabledDays: true,
firstDay: firstDay,
lastDay: lastDay,
currentDay: today,
eventLoader: (day) {
if (day.day == eventDay.day && day.month == eventDay.month) {
return ['Event 1', 'Event 2', 'Event 3'];
}

return [];
},
enabledDayPredicate: (day) => false,
),
),
);

final eventDayKey = cellContentKey(eventDay);
final eventDayCellContent = find.byKey(eventDayKey);

final eventDayStack = find.ancestor(
of: eventDayCellContent,
matching: find.byType(Stack),
);

final eventMarkers = tester.widgetList(
find.descendant(
of: eventDayStack,
matching: find.byWidgetPredicate(
(Widget marker) => marker is Container && marker.child == null,
),
),
);

expect(eventMarkers.length, 3);
},
);

testWidgets(
'currentDay correctly marks given day as today',
(tester) async {
Expand Down