mirror of
https://github.com/Iconica-Development/flutter_availability.git
synced 2025-05-19 05:03:44 +02:00
fix: remove selected range after going to availability overview
This commit is contained in:
parent
4c75c8c260
commit
79be2d74dc
2 changed files with 31 additions and 38 deletions
|
@ -71,6 +71,7 @@ class _AvailabilityOverviewState extends State<AvailabilityOverview> {
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
availabilities: availabilitySnapshot,
|
availabilities: availabilitySnapshot,
|
||||||
|
selectedRange: _selectedRange,
|
||||||
);
|
);
|
||||||
|
|
||||||
var templateLegend = TemplateLegend(
|
var templateLegend = TemplateLegend(
|
||||||
|
@ -96,6 +97,9 @@ class _AvailabilityOverviewState extends State<AvailabilityOverview> {
|
||||||
_selectedRange!,
|
_selectedRange!,
|
||||||
availabilitesWithinSelectedRange,
|
availabilitesWithinSelectedRange,
|
||||||
);
|
);
|
||||||
|
setState(() {
|
||||||
|
_selectedRange = null;
|
||||||
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
var startEditButton = options.primaryButtonBuilder(
|
var startEditButton = options.primaryButtonBuilder(
|
||||||
|
|
|
@ -6,13 +6,14 @@ import "package:flutter_availability/src/util/availability_deviation.dart";
|
||||||
import "package:flutter_availability/src/util/scope.dart";
|
import "package:flutter_availability/src/util/scope.dart";
|
||||||
|
|
||||||
///
|
///
|
||||||
class CalendarView extends StatefulWidget {
|
class CalendarView extends StatelessWidget {
|
||||||
///
|
///
|
||||||
const CalendarView({
|
const CalendarView({
|
||||||
required this.month,
|
required this.month,
|
||||||
required this.availabilities,
|
required this.availabilities,
|
||||||
required this.onMonthChanged,
|
required this.onMonthChanged,
|
||||||
required this.onEditDateRange,
|
required this.onEditDateRange,
|
||||||
|
required this.selectedRange,
|
||||||
super.key,
|
super.key,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -28,46 +29,35 @@ class CalendarView extends StatefulWidget {
|
||||||
/// Callback for when the date range is edited by the user
|
/// Callback for when the date range is edited by the user
|
||||||
final void Function(DateTimeRange? range) onEditDateRange;
|
final void Function(DateTimeRange? range) onEditDateRange;
|
||||||
|
|
||||||
@override
|
///
|
||||||
State<CalendarView> createState() => _CalendarViewState();
|
final DateTimeRange? selectedRange;
|
||||||
}
|
|
||||||
|
|
||||||
class _CalendarViewState extends State<CalendarView> {
|
void _onTapDate(DateTime day) {
|
||||||
DateTimeRange? _selectedRange;
|
|
||||||
|
|
||||||
void onTapDate(DateTime day) {
|
|
||||||
// if there is already a range selected, with a single date and the date
|
// if there is already a range selected, with a single date and the date
|
||||||
//that is selected is after it we extend the range
|
//that is selected is after it we extend the range
|
||||||
if (_selectedRange != null &&
|
if (selectedRange != null &&
|
||||||
day.isAfter(_selectedRange!.start) &&
|
day.isAfter(selectedRange!.start) &&
|
||||||
_selectedRange!.start == _selectedRange!.end) {
|
selectedRange!.start == selectedRange!.end) {
|
||||||
setState(() {
|
onEditDateRange(
|
||||||
_selectedRange = DateTimeRange(
|
DateTimeRange(
|
||||||
start: _selectedRange!.start,
|
start: selectedRange!.start,
|
||||||
end: day,
|
end: day,
|
||||||
);
|
),
|
||||||
});
|
);
|
||||||
widget.onEditDateRange(_selectedRange);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// if select the already selected date we want to clear the range
|
// if select the already selected date we want to clear the range
|
||||||
if (_selectedRange != null &&
|
if (selectedRange != null &&
|
||||||
day.isAtSameMomentAs(_selectedRange!.start) &&
|
day.isAtSameMomentAs(selectedRange!.start) &&
|
||||||
day.isAtSameMomentAs(_selectedRange!.end)) {
|
day.isAtSameMomentAs(selectedRange!.end)) {
|
||||||
setState(() {
|
onEditDateRange(null);
|
||||||
_selectedRange = null;
|
|
||||||
});
|
|
||||||
widget.onEditDateRange(_selectedRange);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// if there is already a range selected we want to clear
|
// if there is already a range selected we want to clear
|
||||||
//it and start a new one
|
//it and start a new one
|
||||||
setState(() {
|
onEditDateRange(DateTimeRange(start: day, end: day));
|
||||||
_selectedRange = DateTimeRange(start: day, end: day);
|
|
||||||
});
|
|
||||||
widget.onEditDateRange(_selectedRange);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
@ -77,8 +67,7 @@ class _CalendarViewState extends State<CalendarView> {
|
||||||
var options = availabilityScope.options;
|
var options = availabilityScope.options;
|
||||||
var translations = options.translations;
|
var translations = options.translations;
|
||||||
|
|
||||||
var mappedCalendarDays =
|
var mappedCalendarDays = _mapAvailabilitiesToCalendarDays(availabilities);
|
||||||
_mapAvailabilitiesToCalendarDays(widget.availabilities);
|
|
||||||
|
|
||||||
var monthDateSelector = Row(
|
var monthDateSelector = Row(
|
||||||
mainAxisAlignment: MainAxisAlignment.center,
|
mainAxisAlignment: MainAxisAlignment.center,
|
||||||
|
@ -87,8 +76,8 @@ class _CalendarViewState extends State<CalendarView> {
|
||||||
padding: EdgeInsets.zero,
|
padding: EdgeInsets.zero,
|
||||||
icon: const Icon(Icons.chevron_left),
|
icon: const Icon(Icons.chevron_left),
|
||||||
onPressed: () {
|
onPressed: () {
|
||||||
widget.onMonthChanged(
|
onMonthChanged(
|
||||||
DateTime(widget.month.year, widget.month.month - 1),
|
DateTime(month.year, month.month - 1),
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
|
@ -96,7 +85,7 @@ class _CalendarViewState extends State<CalendarView> {
|
||||||
SizedBox(
|
SizedBox(
|
||||||
width: _calculateTextWidthOfLongestMonth(context, translations),
|
width: _calculateTextWidthOfLongestMonth(context, translations),
|
||||||
child: Text(
|
child: Text(
|
||||||
translations.monthYearFormatter(context, widget.month),
|
translations.monthYearFormatter(context, month),
|
||||||
style: theme.textTheme.titleMedium,
|
style: theme.textTheme.titleMedium,
|
||||||
textAlign: TextAlign.center,
|
textAlign: TextAlign.center,
|
||||||
),
|
),
|
||||||
|
@ -106,8 +95,8 @@ class _CalendarViewState extends State<CalendarView> {
|
||||||
padding: EdgeInsets.zero,
|
padding: EdgeInsets.zero,
|
||||||
icon: const Icon(Icons.chevron_right),
|
icon: const Icon(Icons.chevron_right),
|
||||||
onPressed: () {
|
onPressed: () {
|
||||||
widget.onMonthChanged(
|
onMonthChanged(
|
||||||
DateTime(widget.month.year, widget.month.month + 1),
|
DateTime(month.year, month.month + 1),
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
|
@ -115,10 +104,10 @@ class _CalendarViewState extends State<CalendarView> {
|
||||||
);
|
);
|
||||||
|
|
||||||
var calendarGrid = CalendarGrid(
|
var calendarGrid = CalendarGrid(
|
||||||
month: widget.month,
|
month: month,
|
||||||
days: mappedCalendarDays,
|
days: mappedCalendarDays,
|
||||||
onDayTap: onTapDate,
|
onDayTap: _onTapDate,
|
||||||
selectedRange: _selectedRange,
|
selectedRange: selectedRange,
|
||||||
);
|
);
|
||||||
|
|
||||||
return Column(
|
return Column(
|
||||||
|
|
Loading…
Reference in a new issue