pax_player 0.0.7 copy "pax_player: ^0.0.7" to clipboard
pax_player: ^0.0.7 copied to clipboard

PlatformAndroid
outdated

A Flutter package for POS (Point of Sale) devices, providing essential methods for card reading, barcode scanning, QR code scanning, and more. Simplify POS integration in your Flutter app with this ve [...]

example/lib/main.dart

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('اسکن / بارکد')),
          ],
        ),
      ),
    );
  }
}
16
likes
140
points
12
downloads

Publisher

unverified uploader

Weekly Downloads

A Flutter package for POS (Point of Sale) devices, providing essential methods for card reading, barcode scanning, QR code scanning, and more. Simplify POS integration in your Flutter app with this versatile package.

Repository (GitHub)
View/report issues

Documentation

API reference

License

BSL-1.0 (license)

Dependencies

flutter, plugin_platform_interface

More

Packages that depend on pax_player

Packages that implement pax_player