devla_sunmi 2.0.2 devla_sunmi: ^2.0.2 copied to clipboard
Support SUNMI T2.
import 'package:flutter/material.dart';
import 'dart:async';
import 'package:devla_sunmi/flutter_sunmi_printer.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatefulWidget {
const MyApp({Key? key}) : super(key: key);
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Sunmi Printer',
theme: ThemeData(
primaryColor: Colors.blue,
),
debugShowCheckedModeBanner: false,
home: const Home());
}
}
class Home extends StatefulWidget {
const Home({Key? key}) : super(key: key);
@override
_HomeState createState() => _HomeState();
}
class _HomeState extends State<Home> {
PrinterStatus? _printerStatus;
PrinterMode? _printerMode;
@override
void initState() {
super.initState();
_bindingPrinter().then((bool isBind) async => {
if (isBind)
{
_getPrinterStatus(),
_printerMode = await _getPrinterMode(),
}
});
}
/// must binding ur printer at first init in app
Future<bool> _bindingPrinter() async {
final bool result = await SunmiPrinter.bindingPrinter();
return result;
}
/// you can get printer status
Future<void> _getPrinterStatus() async {
final PrinterStatus result = await SunmiPrinter.getPrinterStatus();
setState(() {
_printerStatus = result;
});
}
Future<PrinterMode> _getPrinterMode() async {
final PrinterMode mode = await SunmiPrinter.getPrinterMode();
return mode;
}
void printer() async {
await SunmiPrinter.startTransactionPrint();
await SunmiPrinter.printText('ໃບບິນ',
style: SunmiStyle(
align: SunmiPrintAlign.CENTER,
bold: true,
fontSize: SunmiFontSize.LG));
await SunmiPrinter.printText('Paymart payrich ສາຂາ ໜອງພະຍາ',
style: SunmiStyle(
align: SunmiPrintAlign.CENTER,
bold: true,
fontSize: SunmiFontSize.MD));
await SunmiPrinter.printText('( Vientiane, Xaisetthar, Meuang noy )',
style: SunmiStyle(
align: SunmiPrintAlign.CENTER,
));
await SunmiPrinter.printText('+85620 99935756',
style: SunmiStyle(
align: SunmiPrintAlign.CENTER,
));
await SunmiPrinter.line();
await SunmiPrinter.printRow(cols: [
ColumnMaker(text: 'ເລກບິນ', width: 6),
ColumnMaker(text: '1234567890', width: 6, align: SunmiPrintAlign.RIGHT),
]);
await SunmiPrinter.printRow(cols: [
ColumnMaker(text: 'ວັນເວລາ', width: 6),
ColumnMaker(text: '01/01/2022', width: 6, align: SunmiPrintAlign.RIGHT),
]);
await SunmiPrinter.printRow(cols: [
ColumnMaker(text: 'ຊຳລະໂດຍ', width: 6),
ColumnMaker(text: 'ເງິນສົດ', width: 6, align: SunmiPrintAlign.RIGHT),
]);
await SunmiPrinter.line();
await SunmiPrinter.printText('ລາຍການສິນຄ້າ',
style: SunmiStyle(
align: SunmiPrintAlign.CENTER,
bold: true,
fontSize: SunmiFontSize.MD));
await SunmiPrinter.printRow(cols: [
ColumnMaker(text: '1. ເບຍລາວໃຫຍ່', width: 6),
ColumnMaker(text: '2 x 120,000', width: 6, align: SunmiPrintAlign.RIGHT),
]);
await SunmiPrinter.printRow(cols: [
ColumnMaker(text: '1. ເບຍລາວໃຫຍ່', width: 6),
ColumnMaker(text: '2 x 120,000', width: 6, align: SunmiPrintAlign.RIGHT),
]);
await SunmiPrinter.printRow(cols: [
ColumnMaker(text: '1. ເບຍລາວໃຫຍ່', width: 6),
ColumnMaker(text: '2 x 120,000', width: 6, align: SunmiPrintAlign.RIGHT),
]);
await SunmiPrinter.printRow(cols: [
ColumnMaker(text: '1. ເບຍລາວໃຫຍ່', width: 6),
ColumnMaker(text: '2 x 120,000', width: 6, align: SunmiPrintAlign.RIGHT),
]);
await SunmiPrinter.line();
await SunmiPrinter.printText('ສະມາຊິກ',
style: SunmiStyle(
align: SunmiPrintAlign.CENTER,
bold: true,
fontSize: SunmiFontSize.MD));
await SunmiPrinter.printRow(cols: [
ColumnMaker(text: 'ຊື່', width: 6),
ColumnMaker(text: 'ພີນ', width: 6, align: SunmiPrintAlign.RIGHT),
]);
await SunmiPrinter.printRow(cols: [
ColumnMaker(text: 'ເບີໂທ', width: 6),
ColumnMaker(text: '99999999', width: 6, align: SunmiPrintAlign.RIGHT),
]);
await SunmiPrinter.printRow(cols: [
ColumnMaker(text: 'ຄະແນນກັບຄືນ', width: 6),
ColumnMaker(text: '2,000 ຄະແນນ', width: 6, align: SunmiPrintAlign.RIGHT),
]);
await SunmiPrinter.printText('ຂໍຂອບໃຈ',
style: SunmiStyle(
align: SunmiPrintAlign.CENTER,
bold: true,
fontSize: SunmiFontSize.MD));
await SunmiPrinter.lineWrap(3);
await SunmiPrinter.submitTransactionPrint();
await SunmiPrinter.exitTransactionPrint();
}
Future<void> printBarCode() async {
await SunmiPrinter.startTransactionPrint();
await SunmiPrinter.printBarCode('987651231');
await SunmiPrinter.printText('VTE-123123-123123',
style: SunmiStyle(
align: SunmiPrintAlign.CENTER,
bold: false,
fontSize: SunmiFontSize.MD));
await SunmiPrinter.printText('ວັນເວລາ: 01/01/2022 || 15:00:00');
await SunmiPrinter.lineWrap(1);
await SunmiPrinter.printRow(cols: [
ColumnMaker(text: 'col1', width: 6),
ColumnMaker(text: 'col3', width: 6, align: SunmiPrintAlign.RIGHT),
]);
await SunmiPrinter.lineWrap(3);
await SunmiPrinter.submitTransactionPrint();
await SunmiPrinter.exitTransactionPrint();
}
Future<void> printQrCode() async {
await SunmiPrinter.startTransactionPrint();
await SunmiPrinter.printQRCode('987651231');
await SunmiPrinter.printText('VTE-123123-123123',
style: SunmiStyle(
align: SunmiPrintAlign.CENTER,
bold: false,
fontSize: SunmiFontSize.MD));
await SunmiPrinter.printText('ວັນເວລາ: 01/01/2022 || 15:00:00');
await SunmiPrinter.lineWrap(1);
await SunmiPrinter.printRow(cols: [
ColumnMaker(text: 'col1', width: 6),
ColumnMaker(text: 'col3', width: 6, align: SunmiPrintAlign.RIGHT),
]);
await SunmiPrinter.lineWrap(3);
await SunmiPrinter.submitTransactionPrint();
await SunmiPrinter.exitTransactionPrint();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
centerTitle: true,
title: const Text('SUNMI Printer by Devla'),
),
body: Center(
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.center,
children: [
ElevatedButton(
onPressed: () => printer(), child: const Text('printer')),
ElevatedButton(
onPressed: () => printBarCode(),
child: const Text('printBarCode')),
ElevatedButton(
onPressed: () => printQrCode(), child: const Text('QRCODE')),
],
),
));
}
}