warning banner removed from footer in fly mode
This commit is contained in:
@@ -3,10 +3,12 @@ import 'dart:async';
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
|
||||
import '../../domain/waypoint/flat_waypoint_list.dart';
|
||||
import '../../transport/mock/mock_flight_controller_link.dart';
|
||||
import 'current_mission_provider.dart';
|
||||
import 'database_provider.dart';
|
||||
import 'follow_drone_provider.dart';
|
||||
import 'map_controller_provider.dart';
|
||||
import 'telemetry_provider.dart';
|
||||
import 'terrain_provider.dart';
|
||||
|
||||
/// Metadaten der aktuell in Bearbeitung befindlichen Mission - ergaenzt
|
||||
@@ -110,9 +112,21 @@ class CurrentMissionMetaNotifier extends Notifier<MissionMeta> {
|
||||
/// Doku 3.11, siehe fitMapToWaypoints in map_controller_provider.dart) -
|
||||
/// das Laden einer anderen Mission waehrend des Verfolgens soll auf der
|
||||
/// neuen Mission stehen bleiben, nicht sofort wieder zur Drohne springen.
|
||||
///
|
||||
/// Solange keine echte Verbindung (WLAN/MSP) aktiv ist - also
|
||||
/// flightControllerLinkProvider noch der Mock ist - setzt dies zusaetzlich
|
||||
/// die simulierte Drohnenposition auf den ersten Wegpunkt der neu
|
||||
/// geladenen Mission zurueck (Doku: "beim Laden einer Mission Mock-
|
||||
/// Drohnenposition auf ersten Wegpunkt setzen"), damit die Live-Details-
|
||||
/// Ansicht sofort zur neuen Route passt statt an der vorherigen (oder dem
|
||||
/// Berlin-Fallback) haengen zu bleiben.
|
||||
void _fitMapToWaypoints(List<Waypoint> waypoints) {
|
||||
ref.read(followDroneProvider.notifier).set(false);
|
||||
fitMapControllerToWaypoints(ref.read(mapControllerProvider), waypoints);
|
||||
final link = ref.read(flightControllerLinkProvider);
|
||||
if (link is MockFlightControllerLink) {
|
||||
link.resetPosition(waypoints);
|
||||
}
|
||||
}
|
||||
|
||||
/// Benennt eine gespeicherte Mission um (Doku 3.6: nur ueber die
|
||||
|
||||
@@ -288,6 +288,7 @@ class _FlyScreenState extends ConsumerState<FlyScreen> {
|
||||
totalDurationSec: missionStats.durationSec,
|
||||
flyMissionStatus: flyMissionStatus,
|
||||
warnings: warnings,
|
||||
showWarningsBanner: false,
|
||||
onDetailsTap: _openWaypointList,
|
||||
onWarningsTap: () => _openWarningsPanel(warnings),
|
||||
onSettingsTap: () => Navigator.of(context).push(MaterialPageRoute(
|
||||
|
||||
@@ -23,6 +23,7 @@ class MissionFooterBar extends ConsumerWidget {
|
||||
required this.totalDurationSec,
|
||||
this.flyMissionStatus,
|
||||
required this.warnings,
|
||||
this.showWarningsBanner = true,
|
||||
required this.onDetailsTap,
|
||||
required this.onWarningsTap,
|
||||
required this.onSettingsTap,
|
||||
@@ -41,6 +42,13 @@ class MissionFooterBar extends ConsumerWidget {
|
||||
/// Distanz/Zeit dorthin. Bleibt im Plan-Modus null.
|
||||
final FlyMissionStatus? flyMissionStatus;
|
||||
final List<MissionWarning> warnings;
|
||||
|
||||
/// Blendet das Text-Warnbanner ueber der Fusszeile aus (Doku: "Banner mit
|
||||
/// Warnungen ueber der Fusszeile im Fly-Modus entfernen") - der runde
|
||||
/// Warnungsknopf in BottomStatsBar (oeffnet weiterhin WarningsPanel) bleibt
|
||||
/// davon unberuehrt, nur die staendig sichtbare Textzeile verschwindet.
|
||||
/// Default true, damit der Plan-Modus unveraendert bleibt.
|
||||
final bool showWarningsBanner;
|
||||
final VoidCallback onDetailsTap;
|
||||
final VoidCallback onWarningsTap;
|
||||
final VoidCallback onSettingsTap;
|
||||
@@ -52,7 +60,7 @@ class MissionFooterBar extends ConsumerWidget {
|
||||
return Column(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
children: [
|
||||
if (warnings.isNotEmpty)
|
||||
if (showWarningsBanner && warnings.isNotEmpty)
|
||||
Container(
|
||||
width: double.infinity,
|
||||
color: const Color(0xFF7C2D12),
|
||||
|
||||
Reference in New Issue
Block a user