mapbox / mapbox/mapbox-maps-flutter
Exception thrown after calling `dispose()` on MapboxMap
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Dart
- Sterne
- 380
- Forks
- 204
- PR-Merge-Kennzahlen
- Keine gemergten PRs in 30 T.
Beschreibung
Environment
- Flutter version:
3.16.9 - mapbox_maps_flutter version:
0.5.1 - Device:
iPhone Simulator - OS:
iOS 17.2
Steps to Reproduce
- Navigate to a screen with MapWidget
- Pop the screen with MapWidget
Code: GitHub Gist
Description
I'm encountering an issue where an exception is thrown after exiting a screen and calling dispose() on MapboxMap. The exception message suggests that the MapboxMap object is being used after being disposed.
Expected Behavior
After calling dispose() on a MapboxMap object, the object is disposed of properly and no exception is thrown.
Actual Behavior
The following exception is thrown:
[ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: A MapboxMap was used after being disposed.
Once you have called dispose() on a MapboxMap, it can no longer be used.
#0 ChangeNotifier.debugAssertNotDisposed.<anonymous closure> (package:flutter/src/foundation/change_notifier.dart:179:9)
#1 ChangeNotifier.debugAssertNotDisposed (package:flutter/src/foundation/change_notifier.dart:186:6)
#2 ChangeNotifier.dispose (package:flutter/src/foundation/change_notifier.dart:375:27)
#3 MapboxMap.dispose (package:mapbox_maps_flutter/src/mapbox_map.dart:194:11)
#4 _MapWidgetState.dispose (package:mapbox_maps_flutter/src/map_widget.dart:208:18)
<asynchronous suspension>
Beitragsleitfaden
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
Beginne damit, die Freigabepfade in src/mapbox_maps_flutter/src/mapbox_map.dart und src/mapbox_maps_flutter/src/map_widget.dart zu lesen, und verwende die verknüpften Reproduktionsschritte und das Gist, um den Fehler zu reproduzieren. Als erledigt gilt die Aufgabe, wenn ein Bildschirm mit MapWidget verlassen und dessen MapboxMap freigegeben werden kann, ohne dass die gemeldete use-after-dispose-Ausnahme auftritt.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- dart, ios
- Bereich
- mobile
- Issue-Typ
- Bug
- Schwierigkeit
- 3/5
- Geschätzter Aufwand
- 1-2 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 45/100