first commit

This commit is contained in:
2026-02-07 15:57:09 +07:00
commit 157096f164
1153 changed files with 415766 additions and 0 deletions

View File

@@ -0,0 +1,116 @@
import 'package:barcode/barcode.dart';
import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'package:intl/intl.dart';
class StickerData {
final String businessName;
final String name;
final num price;
final String code;
final String mfg;
final bool isTwoIch;
final bool showBusinessName;
final bool showName;
final bool showPrice;
final bool showCode;
final bool showMfg;
final double nameFontSize;
final double priceFontSize;
final double mfgFontSize;
final double codeFontSize;
StickerData({
required this.businessName,
required this.name,
required this.price,
required this.code,
required this.mfg,
required this.isTwoIch,
required this.showBusinessName,
required this.showName,
required this.showPrice,
required this.showCode,
required this.showMfg,
required this.nameFontSize,
required this.priceFontSize,
required this.mfgFontSize,
required this.codeFontSize,
});
}
class StickerWidget extends StatelessWidget {
final StickerData data;
const StickerWidget({super.key, required this.data});
@override
Widget build(BuildContext context) {
final barcode = Barcode.code128();
final svg = barcode.toSvg(data.code, width: data.isTwoIch ? 300 : 200, height: 40, drawText: false);
String formatDateString(String? dateString) {
if (dateString == null) return 'N/A';
try {
final parsed = DateTime.parse(dateString);
return DateFormat('yyyy-MM-dd').format(parsed);
} catch (e) {
return 'N/A';
}
}
return Container(
width: data.isTwoIch ? 350 : 280,
height: 180,
padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 4),
decoration: BoxDecoration(
color: Colors.white,
),
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.center,
children: [
if (data.showBusinessName)
Text(
data.businessName,
style: TextStyle(fontSize: data.nameFontSize, color: Colors.black),
),
if (data.showName)
Text(
data.name,
style: TextStyle(fontWeight: FontWeight.bold, fontSize: data.nameFontSize, color: Colors.black),
),
if (data.showPrice) const SizedBox(height: 2),
if (data.showPrice)
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text('Price: ', style: TextStyle(fontSize: data.priceFontSize, color: Colors.black)),
Text(
NumberFormat.currency(symbol: '').format(data.price),
style: TextStyle(fontSize: data.priceFontSize, fontWeight: FontWeight.bold, color: Colors.black),
),
],
),
const SizedBox(height: 2),
if (data.showMfg)
Text(
'Packing Date: ${formatDateString(data.mfg)}',
style: TextStyle(fontSize: data.mfgFontSize, color: Colors.black),
),
const SizedBox(height: 4),
SizedBox(
height: 40,
width: double.infinity,
child: SvgPicture.string(
svg,
fit: BoxFit.contain,
),
),
const SizedBox(height: 2),
if (data.showCode) Text(data.code, style: TextStyle(fontSize: data.codeFontSize, color: Colors.black)),
],
),
);
}
}