Fix opentopomap x/y, allow searching in release when not offline

This commit is contained in:
stopflock
2025-10-05 16:48:25 -05:00
parent 731cdc4a4b
commit 111bdc4254
6 changed files with 93 additions and 39 deletions
+46 -12
View File
@@ -148,18 +148,52 @@ class MapOverlays extends StatelessWidget {
builder: (context, appState, child) {
return Column(
children: [
// Navigation button - simplified logic (only show in dev mode)
if (kEnableNavigationFeatures && onSearchPressed != null && (appState.showSearchButton || appState.showRouteButton)) ...[
FloatingActionButton(
mini: true,
heroTag: "search_nav",
onPressed: onSearchPressed,
tooltip: appState.showRouteButton
? LocalizationService.instance.t('navigation.routeOverview')
: LocalizationService.instance.t('navigation.searchLocation'),
child: Icon(appState.showRouteButton ? Icons.route : Icons.search),
),
const SizedBox(height: 8),
// Search/Navigation button - show based on new feature flags
if (onSearchPressed != null) ...[
// Show search button if search is available OR if showing route button
if ((enableSearchFeatures(offlineMode: appState.offlineMode) && appState.showSearchButton) ||
(enableNavigationFeatures(offlineMode: appState.offlineMode) && appState.showRouteButton)) ...[
FloatingActionButton(
mini: true,
heroTag: "search_nav",
onPressed: () {
// If offline and trying to search, show snackbar
if (appState.showSearchButton && appState.offlineMode && !kEnableDevelopmentModes) {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text('Search not available offline'),
duration: Duration(seconds: 2),
),
);
} else {
onSearchPressed?.call();
}
},
tooltip: appState.showRouteButton
? LocalizationService.instance.t('navigation.routeOverview')
: LocalizationService.instance.t('navigation.searchLocation'),
child: Icon(appState.showRouteButton ? Icons.route : Icons.search),
),
const SizedBox(height: 8),
]
// Show disabled search button with snackbar in release builds when offline
else if (appState.showSearchButton && !kEnableDevelopmentModes) ...[
FloatingActionButton(
mini: true,
heroTag: "search_nav",
onPressed: () {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text('Search not available offline'),
duration: Duration(seconds: 2),
),
);
},
tooltip: LocalizationService.instance.t('navigation.searchLocation'),
child: Icon(Icons.search),
),
const SizedBox(height: 8),
],
],
// Layer selector button
+25 -21
View File
@@ -4,6 +4,7 @@ import 'package:provider/provider.dart';
import 'package:latlong2/latlong.dart';
import '../app_state.dart';
import '../dev_config.dart';
import '../services/localization_service.dart';
class NavigationSheet extends StatelessWidget {
@@ -100,29 +101,32 @@ class NavigationSheet extends StatelessWidget {
address: provisionalAddress,
),
const SizedBox(height: 16),
Row(
children: [
Expanded(
child: ElevatedButton.icon(
icon: const Icon(Icons.directions),
label: Text(LocalizationService.instance.t('navigation.routeTo')),
onPressed: () {
appState.startRoutePlanning(thisLocationIsStart: false);
},
// Only show routing buttons if navigation features are enabled
if (enableNavigationFeatures(offlineMode: appState.offlineMode)) ...[
Row(
children: [
Expanded(
child: ElevatedButton.icon(
icon: const Icon(Icons.directions),
label: Text(LocalizationService.instance.t('navigation.routeTo')),
onPressed: () {
appState.startRoutePlanning(thisLocationIsStart: false);
},
),
),
),
const SizedBox(width: 12),
Expanded(
child: ElevatedButton.icon(
icon: const Icon(Icons.my_location),
label: Text(LocalizationService.instance.t('navigation.routeFrom')),
onPressed: () {
appState.startRoutePlanning(thisLocationIsStart: true);
},
const SizedBox(width: 12),
Expanded(
child: ElevatedButton.icon(
icon: const Icon(Icons.my_location),
label: Text(LocalizationService.instance.t('navigation.routeFrom')),
onPressed: () {
appState.startRoutePlanning(thisLocationIsStart: true);
},
),
),
),
],
),
],
),
],
],
// SETTING SECOND POINT: Show both points and select button