pax_player 0.0.8
pax_player: ^0.0.8 copied to clipboard
A Flutter package for POS (Point of Sale) devices, providing essential methods for card reading, barcode scanning, QR code scanning, and more.
import 'dart:ui' as ui;
import 'package:flutter/material.dart';
import 'package:flutter/rendering.dart';
import 'package:flutter/services.dart';
import 'package:flutter_pax_printer_utility/flutter_pax_printer_utility.dart';
import 'package:pax_player/pax_player.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return const MaterialApp(
title: 'Pax Player Demo',
debugShowCheckedModeBanner: false,
// home: MyHomePage(title: 'Test Pax Player'),
home: MainPax(),
);
}
}
class MyHomePage extends StatefulWidget {
const MyHomePage({
required this.title,
super.key,
});
final String title;
@override
State<MyHomePage> createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
final GlobalKey _globalKey = GlobalKey();
bool isLoading = false;
Future<Uint8List?> _capturePng() async {
try {
RenderRepaintBoundary boundary = _globalKey.currentContext!
.findRenderObject() as RenderRepaintBoundary;
ui.Image image = await boundary.toImage(pixelRatio: 3.0);
ByteData? byteData =
await image.toByteData(format: ui.ImageByteFormat.png);
var pngBytes = byteData!.buffer.asUint8List();
return pngBytes;
} catch (e) {
if (context.mounted) {
ScaffoldMessenger.of(context).showSnackBar(SnackBar(
content: Text(e.toString()),
backgroundColor: Colors.red,
));
}
}
return null;
}
Future<void> _printReceiptBitmap() async {
Uint8List? bitmapWidget = await _capturePng();
if (bitmapWidget != null) {
await PaxPrinter().initPrinter();
await PaxPrinter().setGray(3);
await PaxPrinter().printBitmap(bitmapWidget);
await PaxPrinter().start();
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text("Print From Bitmap"),
actions: [
IconButton(
onPressed: _printReceiptBitmap, icon: const Icon(Icons.print)),
],
),
body: RepaintBoundary(
key: _globalKey,
child: Container(
decoration: const BoxDecoration(color: Colors.white),
child: const Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text('تست فارسی'),
Text('تست فارسی'),
Text('تست فارسی'),
Text('تست فارسی'),
Text('تست فارسی'),
Text('تست فارسی'),
Text('تست فارسی'),
Text('تست فارسی'),
Text('تست فارسی'),
Text('تست فارسی'),
],
),
),
),
),
);
}
}
class SignBarcode extends StatefulWidget {
const SignBarcode({super.key});
@override
State<SignBarcode> createState() => _SignBarcodeState();
}
class _SignBarcodeState extends State<SignBarcode> {
// final TextEditingController _number = TextEditingController();
// final TextEditingController _count = TextEditingController();
//
// @override
// void dispose() {
// _number.dispose();
// _count.dispose();
// super.dispose();
// }
printQrCode() async {
await FlutterPaxPrinterUtility.init;
await FlutterPaxPrinterUtility.fontSet(
EFontTypeAscii.FONT_24_24, EFontTypeExtCode.FONT_24_24);
await FlutterPaxPrinterUtility.printQRCode('123456789', 512, 512);
await FlutterPaxPrinterUtility.step(150);
var status = await FlutterPaxPrinterUtility.start();
return status;
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text('ثبت نام / بارکد'),
),
body: Column(
children: [
const Text('شماره موبایل:'),
const SizedBox(height: 10),
TextField(
inputFormatters: [FilteringTextInputFormatter.digitsOnly],
keyboardType: TextInputType.number,
),
const SizedBox(height: 10),
const Text('تعداد همراه:'),
const SizedBox(height: 10),
TextField(
inputFormatters: [FilteringTextInputFormatter.digitsOnly],
keyboardType: TextInputType.number,
),
const SizedBox(height: 50),
ElevatedButton(
onPressed: () => printQrCode(), child: const Text('چاپ')),
],
),
);
}
}
class SignCard extends StatefulWidget {
const SignCard({super.key});
@override
State<SignCard> createState() => _SignCardState();
}
class _SignCardState extends State<SignCard> {
String _cardNumber = 'کارت را بکشید';
Future<void> _getCardNumber() async {
setState(() {
_cardNumber = 'کارت را بکشید';
});
String? number;
try {
await FlutterPaxPrinterUtility.init;
await FlutterPaxPrinterUtility.fontSet(
EFontTypeAscii.FONT_24_24, EFontTypeExtCode.FONT_24_24);
await FlutterPaxPrinterUtility.spaceSet(0, 10);
String? result = await PaxPlayer().getCardNumber();
if (result != null) {
number = 'عملیات با موفقیت انجام شد';
}
} on PlatformException catch (e) {
number = "Failed to get barcode: '${e.message}'.";
}
if (!mounted) return;
setState(() {
_cardNumber = number!;
});
await FlutterPaxPrinterUtility.printQRCode('12345678', 512, 512);
await FlutterPaxPrinterUtility.step(150);
final status = await FlutterPaxPrinterUtility.start();
debugPrint(status);
await PaxPlayer().getBeep(100);
setState(() {
_cardNumber = 'number';
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text('ثبت نام / کارت'),
),
body: Column(
children: [
const Text('شماره موبایل:'),
const SizedBox(height: 10),
TextField(
inputFormatters: [FilteringTextInputFormatter.digitsOnly],
keyboardType: TextInputType.number,
),
const SizedBox(height: 10),
const Text('تعداد همراه:'),
const SizedBox(height: 10),
TextField(
inputFormatters: [FilteringTextInputFormatter.digitsOnly],
keyboardType: TextInputType.number,
),
const SizedBox(height: 50),
ElevatedButton(
onPressed: () {
_getCardNumber();
},
child: const Text('کارت بکشید')),
const SizedBox(height: 30),
_cardNumber.contains('عملیات')
? Text(_cardNumber)
: const SizedBox.shrink(),
],
),
);
}
}
class ScanCard extends StatefulWidget {
const ScanCard({super.key});
@override
State<ScanCard> createState() => _ScanCardState();
}
class _ScanCardState extends State<ScanCard> {
String _cardNumber = 'کارت را بکشید';
Future<void> _getCardNumber() async {
setState(() {
_cardNumber = 'کارت را بکشید';
});
String? number;
try {
String? result = await PaxPlayer().getCardNumber();
if (result != null) {
number = 'عملیات با موفقیت انجام شد';
}
} on PlatformException catch (e) {
number = "Failed to get barcode: '${e.message}'.";
}
if (!mounted) return;
setState(() {
_cardNumber = number!;
});
await PaxPlayer().getBeep(100);
Future.delayed(const Duration(milliseconds: 500), _getCardNumber);
}
@override
void initState() {
WidgetsBinding.instance.addPostFrameCallback((_) async {
_getCardNumber();
});
super.initState();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text('اسکن کارت'),
),
body: SizedBox(
width: double.infinity,
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text(_cardNumber),
],
),
),
);
}
}
class ScanBarcode extends StatefulWidget {
const ScanBarcode({super.key});
@override
State<ScanBarcode> createState() => _ScanBarcodeState();
}
class _ScanBarcodeState extends State<ScanBarcode> {
String _barcodeData = 'بارکد را اسکن نمایید';
Future<void> _getBarcode() async {
setState(() {
_barcodeData = 'بارکد را اسکن نمایید';
});
String? number;
try {
String? result = await PaxPlayer().getScanBarcode();
if (result != null) {
number = 'عملیات با موفقیت انجام شد';
}
} on PlatformException catch (e) {
number = "Failed to get barcode: '${e.message}'.";
}
if (!mounted) return;
setState(() {
_barcodeData = number!;
});
await PaxPlayer().getBeep(100);
}
@override
void initState() {
WidgetsBinding.instance.addPostFrameCallback((_) async {
_getBarcode();
});
super.initState();
}
@override
Widget build(BuildContext context) {
return Scaffold(
floatingActionButton: FloatingActionButton(
onPressed: () => _getBarcode(),
child: const Icon(Icons.qr_code_scanner_outlined),
),
appBar: AppBar(
title: const Text('اسکن بارکد'),
),
body: SizedBox(
width: double.infinity,
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text(_barcodeData),
],
),
),
);
}
}
class MainPax extends StatelessWidget {
const MainPax({super.key});
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text('پدیده'),
),
body: SizedBox(
width: double.infinity,
child: Column(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
ElevatedButton(
onPressed: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => const SignBarcode()));
},
child: const Text('ثبت نام / بارکد')),
ElevatedButton(
onPressed: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => const SignCard()));
},
child: const Text('ثبت نام / کارت')),
ElevatedButton(
onPressed: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => const ScanCard()));
},
child: const Text('اسکن / کارت')),
ElevatedButton(
onPressed: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => const ScanBarcode()));
},
child: const Text('اسکن / بارکد')),
],
),
),
);
}
}