Fixed a problem with date calculations that caused a test to fail in a non-US time zone. (#60396)

This commit is contained in:
Darren Austin
2020-06-29 10:03:02 -07:00
committed by GitHub
parent c0902d60a4
commit 812c189de8
2 changed files with 13 additions and 8 deletions

View File

@@ -668,14 +668,14 @@ class _MonthPickerState extends State<_MonthPicker> {
});
}
static const Map<TraversalDirection, Duration> _directionOffset = <TraversalDirection, Duration>{
TraversalDirection.up: Duration(days: -DateTime.daysPerWeek),
TraversalDirection.right: Duration(days: 1),
TraversalDirection.down: Duration(days: DateTime.daysPerWeek),
TraversalDirection.left: Duration(days: -1),
static const Map<TraversalDirection, int> _directionOffset = <TraversalDirection, int>{
TraversalDirection.up: -DateTime.daysPerWeek,
TraversalDirection.right: 1,
TraversalDirection.down: DateTime.daysPerWeek,
TraversalDirection.left: -1,
};
Duration _dayDirectionOffset(TraversalDirection traversalDirection, TextDirection textDirection) {
int _dayDirectionOffset(TraversalDirection traversalDirection, TextDirection textDirection) {
// Swap left and right if the text direction if RTL
if (textDirection == TextDirection.rtl) {
if (traversalDirection == TraversalDirection.left)
@@ -688,12 +688,12 @@ class _MonthPickerState extends State<_MonthPicker> {
DateTime _nextDateInDirection(DateTime date, TraversalDirection direction) {
final TextDirection textDirection = Directionality.of(context);
DateTime nextDate = date.toUtc().add(_dayDirectionOffset(direction, textDirection));
DateTime nextDate = utils.addDaysToDate(date, _dayDirectionOffset(direction, textDirection));
while (!nextDate.isBefore(widget.firstDate) && !nextDate.isAfter(widget.lastDate)) {
if (_isSelectable(nextDate)) {
return nextDate;
}
nextDate = nextDate.add(_dayDirectionOffset(direction, textDirection));
nextDate = utils.addDaysToDate(nextDate, _dayDirectionOffset(direction, textDirection));
}
return null;
}

View File

@@ -72,6 +72,11 @@ DateTime addMonthsToMonthDate(DateTime monthDate, int monthsToAdd) {
return DateTime(monthDate.year, monthDate.month + monthsToAdd);
}
/// Returns a [DateTime] with the added number of days and no time set.
DateTime addDaysToDate(DateTime date, int days) {
return DateTime(date.year, date.month, date.day + days);
}
/// Computes the offset from the first day of the week that the first day of
/// the [month] falls on.
///