maxx_sunmi_printer 0.0.4
maxx_sunmi_printer: ^0.0.4 copied to clipboard
Print with sunmi mobile printer.
example/lib/main.dart
import 'dart:convert';
import 'dart:typed_data';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:maxx_sunmi_printer/maxx_sunmi_printer.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatefulWidget {
const MyApp({Key? key}) : super(key: key);
@override
State<MyApp> createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
String connection = "Disconnect";
Future<void> printExample() async {
// pirnt image
ByteData bytes = await rootBundle.load('assets/logo.jpg');
final buffer = bytes.buffer;
final imgData = base64.encode(Uint8List.view(buffer));
MaxxSunmiPrinter.printImage(imgData);
MaxxSunmiPrinter.printText(
'Maxx POS',
styles: const SunmiStyles(
isBold: true,
isUnderLine: false,
alignment: SunmiAlign.center,
size: SunmiSize.lg,
),
);
MaxxSunmiPrinter.paperFeed();
MaxxSunmiPrinter.printTable(
cols: [
SunmiCol(text: "លេខវិក្កយបត្រ", width: 6, alignment: SunmiAlign.left),
SunmiCol(text: "IN00000001", width: 6, alignment: SunmiAlign.right),
],
);
MaxxSunmiPrinter.printTable(
cols: [
SunmiCol(text: "កាលបរិច្ឆេទ", width: 6, alignment: SunmiAlign.left),
SunmiCol(text: "01-Aug-2022 11:11 AM", width: 6, alignment: SunmiAlign.right),
],
);
MaxxSunmiPrinter.printTable(
cols: [
SunmiCol(text: "អតិថិជន", width: 4, alignment: SunmiAlign.left),
SunmiCol(text: "Jackie", width: 8, alignment: SunmiAlign.right),
],
);
MaxxSunmiPrinter.printTable(
cols: [
SunmiCol(text: "អ្នកគិតលុយ", width: 4, alignment: SunmiAlign.left),
SunmiCol(text: "Rothanak", width: 8, alignment: SunmiAlign.right),
],
);
// Test table
MaxxSunmiPrinter.printTable(
isBold: true,
cols: [
SunmiCol(text: 'បរិយាយ', width: 5),
SunmiCol(text: 'ចំនួន', width: 2, alignment: SunmiAlign.right),
SunmiCol(text: 'តម្លៃ', width: 2, alignment: SunmiAlign.right),
SunmiCol(text: 'សរុប', width: 3, alignment: SunmiAlign.right),
],
);
MaxxSunmiPrinter.printTextLine();
String subTotal = "32.50";
String discount = "0";
String grandTotal = "32.50";
String grandTotalRiel = "130000";
String receiveAmount = "50.00";
String changeAmount = "17.5";
String changeAmountRiel = "70000";
dynamic salesLine = {
{"line_description": "បន្លែ", "quantity": 10.00, "unit_price": 1.5, "amount": 15.00},
{"line_description": "ផ្លែឈឺ", "quantity": 2.00, "unit_price": 10, "amount": 20},
{"line_description": "ទឹកកក", "quantity": 10, "unit_price": 0.25, "amount": 2.25},
};
for (dynamic obj in salesLine) {
MaxxSunmiPrinter.printTable(
cols: [
SunmiCol(text: obj["line_description"].toString(), width: 5),
SunmiCol(text: obj["quantity"].toString(), width: 2, alignment: SunmiAlign.right),
SunmiCol(text: obj["unit_price"].toString(), width: 2, alignment: SunmiAlign.right),
SunmiCol(text: obj["amount"].toString(), width: 3, alignment: SunmiAlign.right),
],
);
}
MaxxSunmiPrinter.printTextLine();
MaxxSunmiPrinter.printTable(
cols: [
SunmiCol(text: 'សរុប', width: 6, alignment: SunmiAlign.left),
SunmiCol(text: subTotal, width: 6, alignment: SunmiAlign.right),
],
);
MaxxSunmiPrinter.printTable(
cols: [
SunmiCol(text: 'បញ្ចុះតម្លៃ', width: 6, alignment: SunmiAlign.left),
SunmiCol(text: discount, width: 6, alignment: SunmiAlign.right),
],
);
MaxxSunmiPrinter.printTable(
isBold: true,
cols: [
SunmiCol(text: "សរុបចុងក្រោយ(\$)", width: 6, alignment: SunmiAlign.left),
SunmiCol(text: grandTotal, width: 6, alignment: SunmiAlign.right),
],
);
MaxxSunmiPrinter.printTable(
isBold: true,
cols: [
SunmiCol(text: "សរុបចុងក្រោយ(R)", width: 6, alignment: SunmiAlign.left),
SunmiCol(text: grandTotalRiel, width: 6, alignment: SunmiAlign.right),
],
);
MaxxSunmiPrinter.printTable(
isBold: true,
cols: [
SunmiCol(text: "ប្រាក់ទទួល(\$)", width: 6, alignment: SunmiAlign.left),
SunmiCol(text: receiveAmount, width: 6, alignment: SunmiAlign.right),
],
);
MaxxSunmiPrinter.printTable(
cols: [
SunmiCol(text: "ប្រាក់អាប់(\$)", width: 6, alignment: SunmiAlign.left),
SunmiCol(text: changeAmount, width: 6, alignment: SunmiAlign.right),
],
);
MaxxSunmiPrinter.printTable(
cols: [
SunmiCol(text: "ប្រាក់អាប់(៛)", width: 6, alignment: SunmiAlign.left),
SunmiCol(text: changeAmountRiel, width: 6, alignment: SunmiAlign.right),
],
);
MaxxSunmiPrinter.paperFeed();
MaxxSunmiPrinter.printText(
"Exchange Rate 1\$: 4000} R",
styles: const SunmiStyles(
isBold: true,
alignment: SunmiAlign.center,
size: SunmiSize.sm,
),
);
MaxxSunmiPrinter.printText(
"វិធីសាស្រ្តទូទាត់/Payment Method : CASH",
styles: const SunmiStyles(
isBold: true,
alignment: SunmiAlign.center,
size: SunmiSize.sm,
),
);
MaxxSunmiPrinter.printText(
"ទំនិញទិញហើយមិនអាចប្តូរវិញបានទេ",
styles: const SunmiStyles(
isBold: true,
alignment: SunmiAlign.center,
size: SunmiSize.sm,
),
);
MaxxSunmiPrinter.printText(
"Powered by",
styles: const SunmiStyles(
isBold: true,
alignment: SunmiAlign.center,
size: SunmiSize.md,
),
);
MaxxSunmiPrinter.printText(
"MAXX Creation Technology Co.,LTD",
styles: const SunmiStyles(
isBold: true,
alignment: SunmiAlign.center,
size: SunmiSize.sm,
),
);
MaxxSunmiPrinter.paperFeed();
}
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Maxx Sunmi Printer',
home: Scaffold(
appBar: AppBar(
title: const Text('Maxx Sunmi Printer'),
backgroundColor: const Color.fromRGBO(12, 47, 71, 1),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[
Container(
height: 40,
width: 200,
margin: const EdgeInsets.symmetric(vertical: 10),
alignment: Alignment.center,
color: connection == "Disconnect" ? Colors.red : Colors.green,
child: Text(connection),
),
ElevatedButton(
onPressed: () async {
String result = await MaxxSunmiPrinter.initializePrinter();
setState(() {
connection = result;
});
print("result :$result");
},
child: Container(
height: 40,
width: 200,
alignment: Alignment.center,
child: const Text("Init Printer"),
),
),
ElevatedButton(
onPressed: () async {
String result = await MaxxSunmiPrinter.printText("សួស្តីកម្ពុជា");
("result : $result");
MaxxSunmiPrinter.paperFeed();
},
child: Container(
height: 40,
width: 200,
alignment: Alignment.center,
child: const Text("Print Text"),
),
),
ElevatedButton(
onPressed: () async {
ByteData bytes = await rootBundle.load('assets/logo.jpg');
final buffer = bytes.buffer;
final imgData = base64.encode(Uint8List.view(buffer));
MaxxSunmiPrinter.printImage(imgData, align: SunmiAlign.center);
MaxxSunmiPrinter.paperFeed(number: 1);
},
child: Container(
height: 40,
width: 200,
alignment: Alignment.center,
child: const Text("Pirnt Image"),
),
),
ElevatedButton(
onPressed: () => MaxxSunmiPrinter.paperFeed(),
child: Container(
height: 40,
width: 200,
alignment: Alignment.center,
child: const Text("Paper Feed"),
),
),
ElevatedButton(
onPressed: () => MaxxSunmiPrinter.printTextLine(),
child: Container(
height: 40,
width: 200,
alignment: Alignment.center,
child: const Text("Print Line"),
),
),
ElevatedButton(
onPressed: () => MaxxSunmiPrinter.printBarcode("1234567890123"),
child: Container(
height: 40,
width: 200,
alignment: Alignment.center,
child: const Text("Print Barcode"),
),
),
ElevatedButton(
onPressed: () => MaxxSunmiPrinter.printQrCode("www.maxx4business.com"),
child: Container(
height: 40,
width: 200,
alignment: Alignment.center,
child: const Text("Print Qr Code"),
),
),
ElevatedButton(
onPressed: () => printExample(),
child: Container(
height: 40,
width: 200,
alignment: Alignment.center,
child: const Text("Print Invoice"),
),
),
ElevatedButton(
onPressed: () async {
String result = await MaxxSunmiPrinter.printLabel(description: "Coca Cola", barcode: "C1234567890123456", price: "តម្លៃ : 10.00\$");
print("result : $result");
},
child: Container(
height: 40,
width: 200,
alignment: Alignment.center,
child: const Text("Print Label"),
),
),
],
)),
),
);
}
}