kiosk_plugin 0.0.1
kiosk_plugin: ^0.0.1 copied to clipboard
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)"),
),
],
),
),
),
);
}
}