iposprinter 0.0.2 copy "iposprinter: ^0.0.2" to clipboard
iposprinter: ^0.0.2 copied to clipboard

PlatformAndroid

A flutter plugin for the iposprinter java library.

example/lib/main.dart

import 'dart:typed_data';

import 'package:flutter/material.dart';
import 'dart:async';

import 'package:flutter/services.dart';
import 'package:iposprinter/iposprinter.dart';
import 'package:iposprinter_example/testPrint.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> {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(home: const HomeWidget());
  }
}

class HomeWidget extends StatefulWidget {
  const HomeWidget({Key? key}) : super(key: key);

  @override
  _HomeWidgetState createState() => _HomeWidgetState();
}

class _HomeWidgetState extends State<HomeWidget> {
  late IPOSPrinter posPrinter;
  bool isConnected = false;
  bool canPrint = false;
  late Uint8List imageData;

  @override
  void initState() {
    super.initState();
    posPrinter = IPOSPrinter.instance;
    initPlatformState();
  }

  Future<Uint8List> getImageFileFromAssets() async {
    ByteData bytes = await rootBundle.load("assets/logo2.jpg");
    return await bytes.buffer
        .asUint8List(bytes.offsetInBytes, bytes.lengthInBytes);
  }

  // Platform messages are asynchronous, so we initialize in an async method.
  Future<void> initPlatformState() async {
    bool state = await posPrinter.initPrinter();
    print("Init Status: $state");
    if (state) {
      posPrinter.onRead().listen((event) {
        print("Reed Event: $event");
      });
      posPrinter.onStateChanged().listen((event) {
        switch (event) {
          case PrinterStatus.PRINTER_BLUETOOTH_ON:
            print("bluetooth device state: on");
            setState(() {
              isConnected = true;
            });
            break;
          case PrinterStatus.PRINTER_BLUETOOTH_CONNECTED:
            print("bluetooth device state: connected");
            setState(() {
              isConnected = true;
            });
            break;
          case PrinterStatus.PRINTER_BLUETOOTH_DISCONNECTED:
            print("bluetooth device state: disconnected");
            setState(() {
              isConnected = false;
            });
            break;
          case PrinterStatus.PRINTER_BLUETOOTH_DISCONNECTING:
            print("bluetooth device state: disconnecting");
            setState(() {
              isConnected = false;
            });
            break;
          case PrinterStatus.PRINTER_BLUETOOTH_OFF:
            print("bluetooth device state: off");
            setState(() {
              isConnected = false;
            });
            break;
          case PrinterStatus.PRINTER_BLUETOOTH_TURNING_OFF:
            print("bluetooth device state: turning off");
            setState(() {
              isConnected = false;
            });
            break;
          case PrinterStatus.PRINTER_PAPER_EXISTS:
            print("Paper present in the POS Printer");
            setState(() {
              isConnected = true;
            });
            break;
          case PrinterStatus.PRINTER_PAPER_LESS:
            print("No paper in the POS Printer");
            setState(() {
              isConnected = false;
            });
            break;
          case PrinterStatus.PRINTER_IS_BUSY:
            print("POS Printer is busy");
            setState(() {
              isConnected = false;
            });
            break;
          case PrinterStatus.PRINTER_NORMAL:
            print("POS Printer is normal");
            setState(() {
              isConnected = true;
            });
            break;
        }
      });
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('StockManager'),
      ),
      body: Center(
        child: TextButton(
            onPressed: (isConnected)
                ? () async {
                    imageData = await getImageFileFromAssets();
                    try {
                      var status = await posPrinter.printerStatus();
                      print("Printer Status: $status");
                      await posPrinter.printStyledFormatText(
                          "\u20A6 Welcome to Printer Test",
                          fontSize: 16,
                          align: 0);
                      await posPrinter.printStyledFormatText(
                          "\u20A6 Welcome to Printer Test",
                          fontSize: 24,
                          align: 1);
                      await posPrinter.printStyledFormatText(
                          "\u20A6 Welcome to StockManager",
                          fontSize: 32,
                          align: 2);
                      await posPrinter.printStyledFormatText(
                          "\u20A6 Welcome to StockManager",
                          fontSize: 48,
                          align: 0);
                      await posPrinter.printQRCode("Printer Test");
                      await posPrinter.printLineDemarcation();
                      // }
                    } catch (error) {
                      print(error.toString());
                      if (error is PlatformException) {
                        showModalBottomSheet(
                            context: context,
                            backgroundColor: Colors.grey[900],
                            builder: (context) {
                              return Wrap(
                                children: [
                                  Padding(
                                      padding: const EdgeInsets.symmetric(
                                          horizontal: 16, vertical: 8),
                                      child: Row(
                                        children: [
                                          Expanded(
                                              child: Text(
                                            error.message ??
                                                "Error from printer",
                                            style: Theme.of(context)
                                                .textTheme
                                                .bodyText2!
                                                .copyWith(color: Colors.white),
                                          )),
                                          TextButton(
                                              onPressed: () {
                                                Navigator.pop(context);
                                                posPrinter.initPrinter();
                                              },
                                              child: const Text("Retry"))
                                        ],
                                      ))
                                ],
                              );
                            });
                      } else {
                        print("Error: ${error.toString()}");
                        showModalBottomSheet(
                            context: context,
                            backgroundColor: Colors.grey[900],
                            builder: (context) {
                              return Wrap(
                                children: [
                                  Padding(
                                      padding: const EdgeInsets.symmetric(
                                          horizontal: 16, vertical: 8),
                                      child: Row(
                                        children: [
                                          Expanded(
                                              child: Text(
                                            "Error Printing Data",
                                            style: Theme.of(context)
                                                .textTheme
                                                .bodyText2!
                                                .copyWith(color: Colors.white),
                                          )),
                                          TextButton(
                                              onPressed: () {
                                                Navigator.pop(context);
                                              },
                                              child: const Text("Retry"))
                                        ],
                                      ))
                                ],
                              );
                            });
                      }
                    }
                  }
                : null,
            child: const OutlinedButton(onPressed: null, child: Text("Test Print"))
        ),
      ),
    );
  }
}
0
likes
100
pub points
26%
popularity

Publisher

unverified uploader

A flutter plugin for the iposprinter java library.

Homepage

Documentation

API reference

License

unknown (LICENSE)

Dependencies

flutter

More

Packages that depend on iposprinter