maxx_sunmi_printer 0.0.4 copy "maxx_sunmi_printer: ^0.0.4" to clipboard
maxx_sunmi_printer: ^0.0.4 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"),
              ),
            ),
          ],
        )),
      ),
    );
  }
}
3
likes
0
points
50
downloads

Publisher

verified publishermaxx4business.com

Weekly Downloads

Print with sunmi mobile printer.

Homepage
Repository (GitHub)

License

unknown (license)

Dependencies

flutter

More

Packages that depend on maxx_sunmi_printer