← Alle Projekte

Produktiv im Einsatz

BOMAG Traversen Rechner

Spezialwerkzeug zur Endgewicht-Berechnung von BOMAG-Traversen – live geprüft gegen das zulässige Toleranzfenster

  • Flutter
  • Dart
  • google_fonts
  • flutter_test
  • flutter_lints
  • Python (Pillow, Icon-Generierung)
  • Android
  • Windows

Die Herausforderung

Beim Bestücken von BOMAG-Traversen muss das fertige Endgewicht jeder Traverse in einem eng definierten Soll-Fenster liegen, das je nach Modell (2204, 2350, 2760 KG) unterschiedlich ausfällt. Das wiederkehrende Aufaddieren von Leergewicht und Zuschlägen sowie das Abziehen der Restbombe ist im Arbeitsalltag fehleranfällig, wenn es im Kopf oder auf Papier geschieht. Eine kleine, robuste App soll die Rechnung übernehmen und sofort sichtbar machen, ob das Gewicht passt.

Das Ziel

Eine fokussierte App, die das Endgewicht von BOMAG-Traversen automatisch berechnet und live gegen das modellabhängige Soll-Fenster prüft, um Rechenfehler beim Bestücken zu vermeiden.

Die Lösung

  • Modell-Auswahl zwischen den drei BOMAG-Typen 2204 KG, 2350 KG und 2760 KG, jeweils mit eigenem Leergewicht und eigenem gültigen Endgewicht-Fenster (belegt in lib/models/bomag_model.dart)
  • Erfassung von bis zu vier Traversen gleichzeitig (Traverse I bis IV) mit den Eingaben Vortrag, Magnetit und Restbombe; das Feld Stahlbeton erscheint nur beim Modell 2350 KG
  • Live-Berechnung des Endgewichts nach der Formel Leergewicht + Vortrag + (Stahlbeton nur bei 2350) + Magnetit − Restbombe (lib/models/traverse_data.dart)
  • Sofortige Gültigkeitsprüfung gegen min/max des Modells mit farbiger Anzeige: grün im erlaubten Fenster, rot außerhalb (lib/widgets/traverse_card.dart, isEndgewichtValid)
  • Rest-Übertrag per Knopfdruck: Die Restbombe einer Traverse wird als Vortrag in die nächste Traverse übernommen (Rest → nächste Traverse)
  • Dezimaleingabe akzeptiert sowohl Komma als auch Punkt, begrenzt auf nicht-negative Werte mit höchstens zwei Nachkommastellen (lib/utils/decimal_input.dart)
  • Zurücksetzen aller Felder über einen Reset-Button; beim Modellwechsel werden modellspezifische Stahlbeton-Werte verworfen, damit keine veralteten Werte zurückbleiben
  • Responsives Layout: 1×4 nebeneinander im Breitformat (Tablet/Desktop), 2×2-Raster auf schmalen Bildschirmen; App ist auf Querformat festgelegt (main.dart, SystemChrome)

Technik & Architektur

  • Flutter-App mit Dart (SDK ^3.7.2), publish_to: none (interne/produktive App, kein Pub-Release)
  • Schichtenarchitektur in lib/: models (Domänenlogik BomagModel, TraverseData), state (TraverseControllers bündelt die Text-Controller je Traverse), utils (Dezimal-Parser/-Formatter), widgets (TraverseCard als Eingabekarte)
  • Reine In-Memory-Berechnung im UI-State (StatefulWidget mit setState); keine Datenbank, keine Persistenz, keine Netzwerk- oder Backend-Anbindung im Code erkennbar
  • Domänenmodell als Dart-enum BomagModel mit modellspezifischem Leergewicht, min/max-Endgewicht und Stahlbeton-Flag; Endgewicht-Berechnung im reinen Datenmodell TraverseData gekapselt
  • Eigener TextInputFormatter (DecimalInputFormatter) per RegExp für nicht-negative Dezimalzahlen mit Komma/Punkt und max. 2 Nachkommastellen
  • UI: dunkles Material-Theme mit Hintergrundbild und Overlay, Inter-Schrift über google_fonts, farbcodierte Gültigkeitsanzeige
  • Automatisierte Tests: Unit-Tests für Modelllogik (bomag_model_test.dart), Berechnung/Reset (traverse_data_test.dart), Dezimal-Eingabe (decimal_input_test.dart) plus widget_test.dart
  • Build-Targets Android und Windows eingerichtet (android/ und windows/ vorhanden); App-Icons werden per Python-Skript tool/generate_icon.py (Pillow) generiert

Nutzen in der Praxis

  • Endgewichts-Berechnung erfolgt automatisch und in Echtzeit statt im Kopf oder auf Papier – das reduziert Rechenfehler beim Bestücken
  • Die grün/rot-Anzeige macht ohne Nachdenken sichtbar, ob eine Traverse im zulässigen Gewichtsfenster liegt
  • Vier Traversen lassen sich gleichzeitig im Blick behalten; der Rest-Übertrag spart manuelles Abtippen zwischen den Traversen
  • Modellspezifische Logik (Leergewichte, Toleranzen, Stahlbeton nur bei 2350) ist fest hinterlegt und muss nicht jedes Mal nachgeschlagen werden
  • Bedienung auf Komma- und Punkt-Eingabe ausgelegt und gegen Fehleingaben (Buchstaben, zu viele Nachkommastellen, negative Werte) abgesichert
  • Läuft sowohl auf Android-Geräten im Werkstatt-/Feldeinsatz als auch unter Windows
  • Kleine, getestete Codebasis mit klarer Schichtung – wartbar und nachvollziehbar

Meine Rolle

Ricardo Rehfeldt: Konzept, Entwicklung und Umsetzung eigenständig