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