talabi_printer 1.0.5 copy "talabi_printer: ^1.0.5" to clipboard
talabi_printer: ^1.0.5 copied to clipboard

A Flutter plugin for sending printing commands to a Urovo i9100 thermal printer. This plugin allows seamless integration with the Urovo i9100 printer to send commands and facilitate printing functiona [...]

example/lib/main.dart

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

import 'package:flutter/services.dart';
import 'package:talabi_printer/talabi_printer.dart';

void main() {
  runApp(const MyApp());
}

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

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

class _MyAppState extends State<MyApp> {
  String _platformVersion = 'Unknown';
  int? _printerStatus;
  int _printingCount = 0;
  String _error = '';
  bool _printing = false;
  bool _printingInLoop = false;

  @override
  void initState() {
    super.initState();
    initPlatformState();
  }

  // Platform messages are asynchronous, so we initialize in an async method.
  Future<void> initPlatformState() async {
    // Platform messages may fail, so we use a try/catch PlatformException.
    // We also handle the message potentially returning null.
    try {
      final printer = TalabiPrinter();
      _platformVersion =
          await printer.getPlatformVersion() ?? 'Unknown platform version';
    } on PlatformException {
      _platformVersion = 'Failed to get platform version.';
    }

    try {
      final printer = TalabiPrinter();
      _printerStatus = await printer.getStatus();
    } on PlatformException catch (e) {
      _error = '${e.code}: ${e.message ?? ''} ${e.details ?? ''}';
    }
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('Plugin example app'),
        ),
        body: Center(
          child: Column(
            children: [
              Text('Running on: $_platformVersion\n'),
              Text(
                'Printer status: ${_printerStatus ?? "Unknown printer status"}\n',
              ),
              if (_error.isNotEmpty) Text('Printer error: $_error\n'),
              Text(
                'Prints count: $_printingCount',
              ),
              const SizedBox(
                height: 30,
              ),
              _printing
                  ? const CircularProgressIndicator()
                  : ElevatedButton.icon(
                      onPressed: _print,
                      icon: const Icon(Icons.print),
                      label: const Text('Print'),
                    ),
              const SizedBox(
                height: 30,
              ),
              _printingInLoop
                  ? const CircularProgressIndicator()
                  : ElevatedButton.icon(
                      onPressed: _loopPrinting,
                      icon: const Icon(Icons.print),
                      label: const Text('Loop Printing'),
                    ),
              const SizedBox(
                height: 30,
              ),
              ElevatedButton.icon(
                onPressed: () => setState(() {
                  _printingInLoop = false;
                }),
                icon: const Icon(Icons.stop),
                label: const Text('Stop Printing'),
              ),
            ],
          ),
        ),
      ),
    );
  }

  Future<Uint8List> readAssetBytes(String asset) async {
    final data = await rootBundle.load(asset);
    return data.buffer.asUint8List();
  }

  Future<void> _print() async {
    setState(() {
      _printing = true;
    });
    try {
      final printer = TalabiPrinter();
      for(int i=0; i<5; ++i) {
        await printer.setGray(-1);
        await printer.addText('Talabi is printing', lineHeight: 20);
        await printer.feedLine(3);
        await printer.addText('ימין', align: 'right');
        await printer.addText('מרכז', align: 'center');
        await printer.addText('שמאל', align: 'left', lineHeight: 30);
        await printer.addTextLeftRight('Left Text', 'Right Text', 'large', true);
        await printer.addTextLeftCenterRight(
            'Left Text', 'Center Text', 'Right Text', 'small', false);
        //await _talabiPrinterPlugin.addBarCode('Talabi Orders');
        //await _talabiPrinterPlugin.addQrCode('Talabi Orders LTD');
        //await _talabiPrinterPlugin.addImage(await readAssetBytes('assets/talabi.png'));
        await printer.feedLine(3);
        await printer.addText('Talabi printing is done', lineHeight: 20);
        await printer.feedLine(3);
      }
      _printerStatus = await printer.print();
    } on PlatformException catch (e) {
      _error = '${e.code}: ${e.message ?? ''} ${e.details ?? ''}';
    } catch (error) {
      _error = error.toString();
    } finally {
      setState(() {
        _printing = false;
        ++_printingCount;
      });
    }
  }

  void _loopPrinting() {
    setState(() {
      _printingInLoop = true;
    });
    Timer.periodic(const Duration(seconds: 20), (timer) async {
      if (!_printingInLoop) {
        timer.cancel();
      } else {
        await _print();
      }
    });
  }
}
1
likes
0
points
3
downloads

Publisher

unverified uploader

Weekly Downloads

A Flutter plugin for sending printing commands to a Urovo i9100 thermal printer. This plugin allows seamless integration with the Urovo i9100 printer to send commands and facilitate printing functionality in Flutter applications.

Homepage
Repository (GitHub)
View/report issues

License

unknown (license)

Dependencies

flutter, plugin_platform_interface

More

Packages that depend on talabi_printer

Packages that implement talabi_printer