cancel timer once disposed

This commit is contained in:
Joey Boerwinkel 2022-04-13 11:43:56 +02:00
parent 1b4746a750
commit d82e8807d1
3 changed files with 19 additions and 11 deletions

View file

@ -41,5 +41,9 @@
</array>
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>
<key>NSCameraUsageDescription</key>
<string>This app requires access to the camera.</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>This app requires access to the photo library.</string>
</dict>
</plist>

View file

@ -7,7 +7,7 @@ packages:
name: async
url: "https://pub.dartlang.org"
source: hosted
version: "2.8.1"
version: "2.8.2"
boolean_selector:
dependency: transitive
description:
@ -21,7 +21,7 @@ packages:
name: characters
url: "https://pub.dartlang.org"
source: hosted
version: "1.1.0"
version: "1.2.0"
charcode:
dependency: transitive
description:
@ -183,7 +183,7 @@ packages:
name: matcher
url: "https://pub.dartlang.org"
source: hosted
version: "0.12.10"
version: "0.12.11"
meta:
dependency: transitive
description:
@ -272,7 +272,7 @@ packages:
name: test_api
url: "https://pub.dartlang.org"
source: hosted
version: "0.4.2"
version: "0.4.3"
typed_data:
dependency: transitive
description:
@ -286,7 +286,7 @@ packages:
name: vector_math
url: "https://pub.dartlang.org"
source: hosted
version: "2.1.0"
version: "2.1.1"
sdks:
dart: ">=2.14.0 <3.0.0"
flutter: ">=2.5.0"

View file

@ -87,8 +87,8 @@ class _GoogleTrackTraceMapState extends State<GoogleTrackTraceMap> {
DateTime lastRouteUpdate = DateTime.now();
late final Timer routeCalculateTimer;
late final Timer markerUpdateTimer;
Timer? routeCalculateTimer;
Timer? markerUpdateTimer;
@override
void initState() {
@ -105,9 +105,9 @@ class _GoogleTrackTraceMapState extends State<GoogleTrackTraceMap> {
@override
void dispose() {
routeCalculateTimer?.cancel();
markerUpdateTimer?.cancel();
controller.dispose();
routeCalculateTimer.cancel();
markerUpdateTimer.cancel();
super.dispose();
}
@ -206,6 +206,10 @@ class _GoogleTrackTraceMapState extends State<GoogleTrackTraceMap> {
(widget.timerPrecision == TimePrecision.everyMinute) ? 60 : 1;
markerUpdateTimer =
Timer.periodic(Duration(seconds: updateInterval), (timer) {
if (mounted) {
timer.cancel();
return;
}
if (controller.route != null) {
checkDestinationCloseBy();
controller.route = TrackTraceRoute(
@ -252,8 +256,8 @@ class _GoogleTrackTraceMapState extends State<GoogleTrackTraceMap> {
controller.end.position,
) <
widget.markerUpdatePrecision) {
routeCalculateTimer.cancel();
markerUpdateTimer.cancel();
routeCalculateTimer?.cancel();
markerUpdateTimer?.cancel();
if (controller.route != null) {
controller.route!.line = <PointLatLng>[controller.route!.line[1]];
controller.route!.distance = 0;