UI collapsable height profile, english settings menue
This commit is contained in:
@@ -5,15 +5,18 @@ import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
|
||||
import '../../domain/mission/mission_warnings.dart';
|
||||
import '../providers/active_drone_profile_provider.dart';
|
||||
import '../providers/altitude_profile_provider.dart';
|
||||
import '../providers/mission_meta_provider.dart';
|
||||
import 'missions_drones_panel.dart';
|
||||
import 'mountain_peak_icon.dart';
|
||||
|
||||
/// Statuszeile am unteren Bildschirmrand (HTML-Demonstrator: #bottomBar/
|
||||
/// #statsRow). Details-Pille bleibt mittig und oeffnet die Wegpunktliste;
|
||||
/// Mission-Chip links und Drohnen-Chip rechts oeffnen das Verwaltungsmenue
|
||||
/// mit dem passenden Starttab (HTML-Demonstrator: #missionNameBtn/
|
||||
/// #droneNameBtn). Warnungs- und Settings-Knopf sitzen neben dem
|
||||
/// Drohnen-Chip rechts aussen.
|
||||
/// Drohnen-Chip rechts aussen. Der Hoehenprofil-Toggle (Bergkuppen-Icon)
|
||||
/// sitzt links der Details-Pille.
|
||||
/// Der Send-Button ist bewusst nicht Teil dieses Schritts - die dafuer
|
||||
/// noetige Upload-Anbindung existiert noch nicht.
|
||||
class BottomStatsBar extends ConsumerWidget {
|
||||
@@ -47,6 +50,7 @@ class BottomStatsBar extends ConsumerWidget {
|
||||
Widget build(BuildContext context, WidgetRef ref) {
|
||||
final missionName = ref.watch(currentMissionMetaProvider).name;
|
||||
final droneName = ref.watch(activeDroneProfileProvider).name;
|
||||
final isAltitudeProfileExpanded = ref.watch(altitudeProfileExpandedProvider);
|
||||
|
||||
// Gespiegelter Randabstand (wie in PlanScreen fuer die Drehraeder, Doku:
|
||||
// "Symmetrischer Randabstand auf beiden Seiten"): die groessere der
|
||||
@@ -98,6 +102,13 @@ class BottomStatsBar extends ConsumerWidget {
|
||||
),
|
||||
),
|
||||
),
|
||||
_AltitudeProfileToggleButton(
|
||||
isExpanded: isAltitudeProfileExpanded,
|
||||
onTap: () => ref
|
||||
.read(altitudeProfileExpandedProvider.notifier)
|
||||
.toggle(),
|
||||
),
|
||||
const SizedBox(width: 6),
|
||||
_detailsPill(),
|
||||
// Drohnen-Pille + Warnungs-/Settings-Knopf rechts. Die Pille
|
||||
// sitzt in Flexible, damit sie bei langen Namen zu Gunsten der
|
||||
@@ -184,6 +195,43 @@ class BottomStatsBar extends ConsumerWidget {
|
||||
}
|
||||
}
|
||||
|
||||
/// Runder Knopf links der Details-Pille zum Ein-/Ausklappen des
|
||||
/// Mini-Hoehenprofils. Zeigt eine stilisierte Bergkuppe: ausgeklappt steht
|
||||
/// sie kopfueber (Zacken zeigen nach unten - signalisiert "einklappen"),
|
||||
/// eingeklappt (Standard, um moeglichst viel Kartenflaeche frei zu lassen)
|
||||
/// richtig herum (Zacken zeigen nach oben - signalisiert "ausklappen").
|
||||
class _AltitudeProfileToggleButton extends StatelessWidget {
|
||||
const _AltitudeProfileToggleButton({
|
||||
required this.isExpanded,
|
||||
required this.onTap,
|
||||
});
|
||||
|
||||
final bool isExpanded;
|
||||
final VoidCallback onTap;
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return GestureDetector(
|
||||
onTap: onTap,
|
||||
child: Container(
|
||||
width: 34,
|
||||
height: 34,
|
||||
decoration: BoxDecoration(
|
||||
shape: BoxShape.circle,
|
||||
color: Colors.white.withValues(alpha: 0.12),
|
||||
),
|
||||
child: Center(
|
||||
child: MountainPeakIcon(
|
||||
size: 16,
|
||||
color: Colors.white,
|
||||
upsideDown: isExpanded,
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/// Kleiner, roter Rundknopf fuer aktive Warnungen (Doku 3.10, HTML-
|
||||
/// Demonstrator: #warningsBtn) - oeffnet die Warnungsliste.
|
||||
class _WarningButton extends StatelessWidget {
|
||||
|
||||
Reference in New Issue
Block a user