showSettingsDialog method

void showSettingsDialog()

Implementation

void showSettingsDialog() {
  showDialog(
    context: context,
    builder: (_) => MapSettingsDialog(
      currentSettings: mapSettings,
      onSettingsChanged: (newSettings) {
        final changes = computeSettingsChanges(
          oldSettings: mapSettings,
          newSettings: newSettings,
        );

        safeSetState(this, () {
          mapSettings = newSettings;
          if (changes.mapSourceChanged) {
            tileProvider = createTileProvider();
            adjustZoomForMapSource(
              mapController: mapController,
              mapSettings: newSettings,
            );
          }
        });

        // Handle encrypted places toggle.

        if (changes.encryptedToggled && changes.encryptedEnabled) {
          unawaited(
            loadEncryptedPlaces(skipKeyVerification: true).catchError((
              error,
              stackTrace,
            ) {
              debugPrint('Failed to load encrypted places: $error');
            }),
          );
        } else if (changes.encryptedToggled && !changes.encryptedEnabled) {
          safeSetState(this, () {
            allPlaces = removeEncryptedPlaces(allPlaces: allPlaces);
          });
        }
      },
    ),
  );
}