Fix wind marker slack and off-center header bar
Zwei vom Nutzer per Screenshot gemeldete Probleme: 1. Der Wind-Marker auf der Karte liess bei kurzen Werten (z.B. "1 m/s") weiterhin sichtbaren Leerraum rechts neben dem Text - die letzte Anpassung hatte die Marker-Box auf den unguenstigsten Fall (zweistellig, "25 m/s") fixiert bemessen, wodurch einstellige Werte in derselben Box zu viel Platz hatten. flutter_map's Marker verlangt eine feste Breite (kein intrinsisches Sizing), also wird sie jetzt pro Wegpunkt aus der Ziffernzahl der Geschwindigkeit berechnet (+11px/Ziffer, per Widget-Messung ermittelt) statt eine einzelne Konstante fuer alle Faelle zu verwenden. 2. Die Kopfleiste sass nicht mittig, sondern wirkte nach rechts verschoben. Ursache: SafeArea wendet links/rechts die jeweils tatsaechlichen (auf diesem Emulator unterschiedlich grossen) Insets an - dadurch war der fuer FractionallySizedBox verfuegbare Bereich selbst schon asymmetrisch zur Bildschirmmitte verschoben. Ersetzt durch denselben symmetrischen Randabstand (max(links, rechts)), der in PlanScreen fuer die Drehraeder bereits etabliert ist. Verifiziert: flutter analyze (0 issues), flutter test (64/64), manuell auf Pixel_10a-Emulator - Kopfleiste jetzt sichtbar mittig, mehrere Wind-Marker mit "1 m/s" zeigen keinen Leerraum mehr. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
926d805156
commit
5505bb3741
@@ -1,3 +1,5 @@
|
||||
import 'dart:math' as math;
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||
|
||||
@@ -24,8 +26,25 @@ class TopModeBar extends StatelessWidget {
|
||||
final isFly = context.select((AppModeCubit c) => c.state.mode == AppMode.fly);
|
||||
final activeTint = isFly ? DmcColors.flyModeRed : DmcColors.editModeGreen;
|
||||
|
||||
return SafeArea(
|
||||
bottom: false,
|
||||
// Kein SafeArea: das wendet links/rechts die jeweils tatsaechlichen
|
||||
// (oft asymmetrischen) Insets an, wodurch die Leiste sichtbar von der
|
||||
// Bildschirmmitte abweicht, sobald eine Seite einen groesseren
|
||||
// Aussparungsbereich meldet als die andere. Stattdessen derselbe
|
||||
// symmetrische Randabstand wie bei den Drehraedern (PlanScreen:
|
||||
// safeEdgeInset) - dadurch bleibt die per FractionallySizedBox
|
||||
// zentrierte Leiste auch bei asymmetrischen Insets echt mittig.
|
||||
final topInset = MediaQuery.of(context).padding.top;
|
||||
final safeEdgeInset = math.max(
|
||||
MediaQuery.of(context).padding.left,
|
||||
MediaQuery.of(context).padding.right,
|
||||
);
|
||||
|
||||
return Padding(
|
||||
padding: EdgeInsets.only(
|
||||
top: topInset,
|
||||
left: safeEdgeInset,
|
||||
right: safeEdgeInset,
|
||||
),
|
||||
child: FractionallySizedBox(
|
||||
widthFactor: 0.70,
|
||||
child: Container(
|
||||
|
||||
Reference in New Issue
Block a user