drone status menue with status and critical event log implemented

This commit is contained in:
Constantin Leue
2026-08-04 23:15:56 +02:00
parent 75736793f2
commit 8e4df2d0d3
15 changed files with 571 additions and 24 deletions
+19 -2
View File
@@ -10,6 +10,7 @@ import '../dmc_colors.dart';
import '../providers/active_drone_profile_provider.dart';
import '../providers/altitude_profile_provider.dart';
import '../providers/mission_meta_provider.dart';
import 'drone_status_warnings_panel.dart';
import 'missions_drones_panel.dart';
import 'mountain_peak_icon.dart';
import 'paper_plane_icon.dart';
@@ -59,6 +60,7 @@ class BottomStatsBar extends ConsumerWidget {
required this.onSettingsTap,
this.warnings = const [],
this.onWarningsTap,
this.forceShowWarningsButton = false,
});
final int waypointCount;
@@ -85,6 +87,14 @@ class BottomStatsBar extends ConsumerWidget {
final List<MissionWarning> warnings;
final VoidCallback? onWarningsTap;
/// Zeigt den Warnungs-Knopf auch ohne Mission-Warnungen (Doku: "der
/// warnings tab laesst sich direkt erreichen ueber den existierenden
/// warnings button") - im Fly-Modus sonst unerreichbar, sobald die
/// Mission selbst keine Plan-Warnungen (Speed/Altitude/Range) hat, aber
/// bereits kritische Live-Ereignisse (Doku: "log von kritischen
/// ereignissen") vorliegen. Im Plan-Modus unveraendert false.
final bool forceShowWarningsButton;
@override
Widget build(BuildContext context, WidgetRef ref) {
final missionName = ref.watch(currentMissionMetaProvider).name;
@@ -165,8 +175,15 @@ class BottomStatsBar extends ConsumerWidget {
child: droneStatus != null
? _DroneStatusPill(
status: droneStatus!,
// Oeffnet im Fly-Modus das neue Status-Menue
// (Doku: "ein neues menue anlegen ... nach dem
// vorbild des menues fuer drones and
// missions") direkt auf dem Status-Tab, statt
// wie zuvor die Drohnenprofil-Verwaltung -
// Profile werden waehrend des Fluges ohnehin
// nicht gewechselt.
onTap: () => Navigator.of(context).push(MaterialPageRoute(
builder: (_) => const MissionsDronesPanel.drones(),
builder: (_) => const DroneStatusWarningsPanel.status(),
)),
)
: _NameChip(
@@ -184,7 +201,7 @@ class BottomStatsBar extends ConsumerWidget {
),
),
const SizedBox(width: _footerElementSpacing),
if (warnings.isNotEmpty) ...[
if (warnings.isNotEmpty || forceShowWarningsButton) ...[
_WarningButton(onTap: onWarningsTap),
const SizedBox(width: _footerElementSpacing),
],