Cancel timer when un-mounting date picker widget

This commit is contained in:
Collin Jackson 2015-08-26 10:45:05 -07:00
parent d547103f6a
commit 4cd223a7e5

View File

@ -299,12 +299,16 @@ class MonthPicker extends ScrollableWidgetList {
}
DateTime _currentDate;
Timer _timer;
void _updateCurrentDate() {
_currentDate = new DateTime.now();
DateTime tomorrow = new DateTime(_currentDate.year, _currentDate.month, _currentDate.day + 1);
Duration timeUntilTomorrow = tomorrow.difference(_currentDate);
timeUntilTomorrow += const Duration(seconds: 1); // so we don't miss it by rounding
new Timer(timeUntilTomorrow, () {
if (_timer != null)
_timer.cancel();
_timer = new Timer(timeUntilTomorrow, () {
setState(() {
_updateCurrentDate();
});
@ -332,6 +336,13 @@ class MonthPicker extends ScrollableWidgetList {
}
return result;
}
void didUnmount() {
super.didUnmount();
if (_timer != null) {
_timer.cancel();
}
}
}
// Scrollable list of years to allow picking a year