maxx_sunmi_printer 0.0.5 copy "maxx_sunmi_printer: ^0.0.5" to clipboard
maxx_sunmi_printer: ^0.0.5 copied to clipboard

outdated

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"),
              ),
            ),
            ElevatedButton(
              onPressed: () async {
                List<String> lineContents = [
                  "Name : Jackie",
                  "Addy: Phnom Penh, beng keng kong , st 292,",
                  "Tel: 010 35 28 20",
                  "A01,XL,White",
                  "\$50.00",
                ];

                String result = await MaxxSunmiPrinter.printSticker(
                    lineContents: lineContents,
                    styles: SunmiStyles(
                      isBold: true,
                      alignment: SunmiAlign.center,
                      size: SunmiSize.customSize(30),
                    ));
                print("result : $result");
              },
              child: Container(
                height: 40,
                width: 200,
                alignment: Alignment.center,
                child: const Text("Print Sticker"),
              ),
            ),
          ],
        )),
      ),
    );
  }
}
3
likes
130
points
50
downloads

Publisher

verified publishermaxx4business.com

Weekly Downloads

Print with sunmi mobile printer.

Homepage
Repository (GitHub)

Documentation

API reference

License

MIT (license)

Dependencies

flutter

More

Packages that depend on maxx_sunmi_printer