PosThemeData.fromSettings constructor
PosThemeData.fromSettings(
- PosBusinessSettings business, {
- PosDeviceSettings? device,
Das Thema aus den Einstellungen. device steuert, was nur dieses Gerät
betrifft (Kachelhöhe); ohne es gelten die Vorgaben.
Implementation
factory PosThemeData.fromSettings(PosBusinessSettings business, {PosDeviceSettings? device}) {
final modus = modeFor(business.theme);
final scharf = modus == KdMode.contrast;
// **Die Marke steht fest.** Die Knöpfe, mit denen kassiert wird, sind
// Teil des Produkts: Kassen, die einander nicht mehr ähneln, kosten jeden
// neuen Kassier eine Eingewöhnung — und eine Hausfarbe, auf der „Bar
// passend" nicht mehr lesbar ist, merkt niemand vor dem Tresen.
// `business.color` bleibt im Datenmodell (Panel und Rechnungs-PDF lesen
// es), färbt hier aber nichts mehr.
return PosThemeData(
theme: business.theme,
mode: modus,
fontScale: fontScales[business.fontSize]!,
// **Mal Schriftfaktor.** Die Höhe einer Kachel ist keine feste Zahl,
// sondern das, was Name und Preis brauchen. Bei Schrift XL in eine
// Kachel für Schrift M gepresst, wird dem Namen die Unterlänge
// abgeschnitten — und „Leistung" ohne das g liest sich falsch.
tileHeight: tileHeights[device?.tileHeight ?? PosTileHeight.m]! * fontScales[business.fontSize]!,
extraColumns: device?.extraColumns ?? 0,
// Radien kommen aus dem Design-System und sind in jedem Modus gleich;
// der Kontrast-Modus schärft Ränder und nimmt Schatten, sonst nichts.
radius: KdForm.radiusLg,
radiusTile: KdForm.radius,
radiusSmall: KdForm.radius,
lineWidth: scharf ? 2 : KdForm.borderWidth,
shadowDepth: scharf ? 0 : (modus == KdMode.dark ? 0.5 : 1),
tileStyle: business.tileStyle,
emoji: business.emoji,
categoryColors: business.categoryColors,
);
}