addQrCode method
- String data, {
- QRSize? size,
- QrModulGroesse groesse = QrModulGroesse.auto,
- bool modell1 = false,
- int myPosGroesse = 280,
Nativer QR-Befehl mit gerechneter Modulgroesse.
size setzt die Groesse fest und schaltet die Rechnung ab -- fuer
Aufrufer, die genau wissen, was ihr Geraet kann. Ohne size entscheidet
QrMass: so gross wie moeglich, gedeckelt durch groesse. Vorher stand
hier fest QRSize.size6, unabhaengig von der Papierbreite; ein Beleg-QR
mit realer Nutzlast (57 Module) wurde damit 390 Punkte breit und
verschwand auf jedem 58-mm-Drucker (384 Punkte) spurlos.
modell1 waehlt den aelteren Symboltyp, siehe QRCode.
Fehlerkorrektur ist M -- dieselbe Stufe wie Blatt, ePOS und Bildweg. Mit der Generator-Vorgabe L haette der Drucker bei mancher Nutzlast ein kleineres Symbol gesetzt, als das Blatt ihm Platz gibt.
myPosGroesse ist die Bildbreite fuer den myPOS-Terminaldruck, der den
QR selbst rendert; Vorgabe 280 wie bisher.
Implementation
void addQrCode(String data,
{QRSize? size,
QrModulGroesse groesse = QrModulGroesse.auto,
bool modell1 = false,
int myPosGroesse = 280}) {
if (data.isEmpty) {
_qrAusfall(data, 'leere Nutzlast');
return;
}
QRSize gewaehlt;
if (size != null) {
gewaehlt = size;
} else {
final QrGroesse mass = QrMass.fuer(
nutzlast: data,
papierbreitePunkte: paperSize.druckPunkte,
groesse: groesse,
);
if (!mass.passt) {
// Synchron gerufen bleibt hier kein Bildweg -- der Aufrufer bekommt
// den Ausfall gemeldet und die Belegdaten in Klarschrift. Ueber
// [_qrNachModus] kommt es dazu nicht, der weicht vorher aufs Bild aus.
_qrAusfall(data,
'QR mit ${mass.module} Modulen ist fuer ${paperSize.mm} mm zu breit');
return;
}
if (mass.unterMindestmass) {
qrAusweich = 'QR mit ${mass.module} Modulen passt nur mit '
'${mass.punkte} Punkten je Modul -- unter dem Mindestmass von '
'${QrMass.mindestPunkte}';
}
gewaehlt = QRSize(mass.punkte!);
}
try {
bytes.add(Uint8List.fromList(
generator.qrcode(data, size: gewaehlt, cor: QRCorrection.M, modell1: modell1)));
myPosPaper.addQrCode(data, size: myPosGroesse);
} catch (e) {
_qrAusfall(data, e);
}
}