mapbox / mapbox/mapbox-maps-flutter

Exception thrown after calling `dispose()` on MapboxMap

Offen
#409 11 Kommentare 6 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

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

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Ö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

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.