kiosk_plugin 0.0.1 copy "kiosk_plugin: ^0.0.1" to clipboard
kiosk_plugin: ^0.0.1 copied to clipboard

PlatformAndroid

A plugin to print on kiosk embedded printer. Currently supports Sunmi K2, K2 Pro, K2 Mini, and Telpo K10

example/lib/main.dart

import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:kiosk_plugin/kiosk.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await Kiosk.initializePrinter();
  runApp(const MyApp());
}

class MyApp extends StatefulWidget {
  const MyApp({super.key});

  @override
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  Uint8List? imageData;

  @override
  Widget build(BuildContext context) {
    final imageData = this.imageData;
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('Kiosk Example'),
        ),
        body: Padding(
          padding: const EdgeInsets.all(16.0),
          child: Column(
            crossAxisAlignment: CrossAxisAlignment.start,
            mainAxisAlignment: MainAxisAlignment.center,
            children: [
              if (imageData != null) Image.memory(imageData),
              FilledButton(
                onPressed: () async {
                  const textStyle = TextStyle(
                    fontSize: 24,
                    color: Color(0xFF000000),
                    fontWeight: FontWeight.w400,
                  );
                  final bitmapBuilder = BitmapBuilder(
                    width: 576,
                    paddingTop: 10,
                    paddingBottom: 10,
                    paddingLeft: 10,
                    paddingRight: 10,
                    defaultTextStyle: textStyle,
                  )
                    ..text(BitmapText(
                      "QIOS",
                      textAlign: TextAlign.center,
                      style: const TextStyle(
                        fontSize: 42,
                        color: Color(0xFF000000),
                        fontStyle: FontStyle.italic,
                        fontWeight: FontWeight.bold,
                        decoration: TextDecoration.underline,
                      ),
                    ))
                    ..space(30)
                    ..table(
                      columnsWidth: [-1, 134, 134],
                      cellPadding: const CellPadding.all(10),
                      border: true,
                      texts: [
                        BitmapText("Nama", style: textStyle.copyWith(fontWeight: FontWeight.bold)),
                        BitmapText(
                          "Harga",
                          textAlign: TextAlign.right,
                          style: textStyle.copyWith(fontWeight: FontWeight.bold),
                        ),
                        BitmapText(
                          "Qty",
                          textAlign: TextAlign.right,
                          style: textStyle.copyWith(fontWeight: FontWeight.bold),
                        ),
                        BitmapText("Apple Fuji"),
                        BitmapText("23.000", textAlign: TextAlign.right),
                        BitmapText("5", textAlign: TextAlign.right),
                        BitmapText("Pisang Cavendish Christmas Package"),
                        BitmapText("15.000", textAlign: TextAlign.right),
                        BitmapText("10", textAlign: TextAlign.right),
                        BitmapText("Cherry"),
                        BitmapText("27.000", textAlign: TextAlign.right),
                        BitmapText("1", textAlign: TextAlign.right),
                      ],
                    )
                    ..finish();
                  final bitmapData = await bitmapBuilder.build();
                  final png = await bitmapBuilder.buildBinary();
                  setState(() {
                    this.imageData = png;
                  });

                  final escPos = EscPosBuilder()
                    ..initializePrinter()
                    ..printText("朹氊\n")
                    ..lineFeed()
                    ..printBitmapFromPixels(
                      byteColors: bitmapData!.colorBytes,
                      width: bitmapData.width,
                      height: bitmapData.height,
                    )
                    ..lineFeed()
                    ..lineFeed()
                    ..cutPaper();

                  Kiosk.printer?.escPos(escPos.build());
                },
                child: const Text("Print Test (ESC/POS)"),
              ),
            ],
          ),
        ),
      ),
    );
  }
}
0
likes
140
points
13
downloads

Publisher

unverified uploader

Weekly Downloads

A plugin to print on kiosk embedded printer. Currently supports Sunmi K2, K2 Pro, K2 Mini, and Telpo K10

Documentation

API reference

License

BSD-3-Clause (license)

Dependencies

flutter, plugin_platform_interface

More

Packages that depend on kiosk_plugin

Packages that implement kiosk_plugin