betragAusText function
Betrag aus dem Eingabefeld in ganzen Cent — oder null.
Gelesen wird über die Ziffern, ausdrücklich nicht über eine Fließkommazahl mit anschließender Multiplikation. Komma und Punkt sind beide zugelassen (auf einer Bildschirmtastatur liegt oft nur eines davon). Abgewiesen wird alles andere, insbesondere drei Nachkommastellen (eine falsche Eingabe, keine Aufforderung zum Runden — wer hier rundete, entschiede am Kassier vorbei über Geld) und 0,00 oder negativ (ein Nullbeleg entsteht nicht hier, und ein Storno ist eine eigene Handlung mit eigenem Beleg).
Implementation
int? betragAusText(String text) {
final treffer = RegExp(r'^(\d+)(?:[.,](\d{1,2}))?$').firstMatch(text.trim());
if (treffer == null) return null;
final ganze = int.parse(treffer.group(1)!);
// Auf zwei Stellen aufgefüllt: „4,5" sind 50 Cent und nicht 5.
final nachkommaText = (treffer.group(2) ?? '').padRight(2, '0');
final nachkomma = nachkommaText.isEmpty ? 0 : int.parse(nachkommaText);
final cents = ganze * 100 + nachkomma;
return cents > 0 ? cents : null;
}