drone status menue with status and critical event log implemented
This commit is contained in:
@@ -14,16 +14,17 @@ import '../../../domain/wind/wind_math.dart';
|
||||
import '../../../transport/flight_controller_link.dart';
|
||||
import '../../providers/active_drone_profile_provider.dart';
|
||||
import '../../providers/current_mission_provider.dart';
|
||||
import '../../providers/drone_event_log_provider.dart';
|
||||
import '../../providers/follow_drone_provider.dart';
|
||||
import '../../providers/map_controller_provider.dart';
|
||||
import '../../providers/telemetry_provider.dart';
|
||||
import '../../providers/terrain_provider.dart';
|
||||
import '../settings/settings_screen.dart';
|
||||
import '../../widgets/drone_marker_icon.dart';
|
||||
import '../../widgets/drone_status_warnings_panel.dart';
|
||||
import '../../widgets/mission_footer_bar.dart';
|
||||
import '../../widgets/mission_map.dart';
|
||||
import '../../widgets/waypoint_list_panel.dart';
|
||||
import '../../widgets/warnings_panel.dart';
|
||||
|
||||
/// Fly-Modus (Architektur-Doku 3.10/3.11): zeigt dieselbe Karte + Fusszeile
|
||||
/// wie der Plan-Modus, aber ohne Reticle/Draeder - im Flug wird die Route
|
||||
@@ -116,23 +117,9 @@ class _FlyScreenState extends ConsumerState<FlyScreen> {
|
||||
);
|
||||
}
|
||||
|
||||
void _openWarningsPanel(List<MissionWarning> warnings) {
|
||||
void _openDroneStatusWarningsPanel() {
|
||||
Navigator.of(context).push(MaterialPageRoute<void>(
|
||||
builder: (routeContext) => WarningsPanel(
|
||||
warnings: warnings,
|
||||
onClose: () => Navigator.of(routeContext).pop(),
|
||||
onWarningTap: (warning) {
|
||||
Navigator.of(routeContext).pop();
|
||||
switch (warning.action) {
|
||||
case WarningAction.altitude:
|
||||
_openWaypointList(initialTab: PanelTab.altitude);
|
||||
case WarningAction.speed:
|
||||
_openWaypointList(initialTab: PanelTab.speed);
|
||||
case WarningAction.map:
|
||||
fitMapToWaypoints(ref, ref.read(currentMissionProvider));
|
||||
}
|
||||
},
|
||||
),
|
||||
builder: (_) => const DroneStatusWarningsPanel.warnings(),
|
||||
));
|
||||
}
|
||||
|
||||
@@ -142,6 +129,11 @@ class _FlyScreenState extends ConsumerState<FlyScreen> {
|
||||
final droneProfile = ref.watch(activeDroneProfileProvider);
|
||||
final telemetry = ref.watch(telemetryProvider).value;
|
||||
final followDrone = ref.watch(followDroneProvider);
|
||||
// Beobachtet das Ereignis-Log dauerhaft ab dem ersten Eintritt in den
|
||||
// Fly-Modus (Doku: "log von kritischen ereignissen mit time stamp") -
|
||||
// haelt drone_event_log_provider.dart's Notifier am Leben, solange
|
||||
// dieser Screen existiert, siehe dessen Klassendoku.
|
||||
final droneEventLog = ref.watch(droneEventLogProvider);
|
||||
|
||||
// Solange der ueber den GPS-Knopf in der Kopfleiste (FlyMapControls)
|
||||
// aktivierte Folgemodus aktiv ist, jede neue Telemetrie-Position
|
||||
@@ -307,8 +299,9 @@ class _FlyScreenState extends ConsumerState<FlyScreen> {
|
||||
warnings: warnings,
|
||||
showWarningsBanner: false,
|
||||
batteryPercent: telemetry?.batteryPercent,
|
||||
forceShowWarningsButton: droneEventLog.isNotEmpty,
|
||||
onDetailsTap: _openWaypointList,
|
||||
onWarningsTap: () => _openWarningsPanel(warnings),
|
||||
onWarningsTap: _openDroneStatusWarningsPanel,
|
||||
onSettingsTap: () => Navigator.of(context).push(MaterialPageRoute(
|
||||
builder: (_) => const SettingsScreen(),
|
||||
)),
|
||||
|
||||
Reference in New Issue
Block a user