flutter_citizen_printer 0.0.3 copy "flutter_citizen_printer: ^0.0.3" to clipboard
flutter_citizen_printer: ^0.0.3 copied to clipboard

PlatformAndroid

Flutter plugin for Citizen label printer via USB and WiFi.

example/lib/main.dart

import 'dart:developer';

import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_citizen_printer/flutter_citizen_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> {
  final addressController = TextEditingController();
  String usbStatus = "";
  List<UsbPrinterInfo> usbPrinters = [];
  UsbPrinterInfo? selectedPrinter;

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: const Text('Citizen Printer Example')),
        body: Builder(builder: (context) {
          return Center(
            child: Padding(
              padding: const EdgeInsets.symmetric(horizontal: 20),
              child: SingleChildScrollView(
                child: Column(
                  mainAxisAlignment: MainAxisAlignment.center,
                  children: [
                    Text(usbStatus),
                    ElevatedButton(
                      onPressed: () async {
                        try {
                          final res =
                              await FlutterCitizenPrinter.getUsbStatus();
                          log("USB Status: $res");
                          setState(() {
                            usbStatus = res.map((e) => e.name).join(", ");
                          });
                        } catch (e) {
                          log("USB Status error: $e");
                          if (!mounted) return;
                          setState(() {
                            usbStatus = "Error: $e";
                          });
                        }
                      },
                      child: const Text("Get USB Status"),
                    ),
                    const SizedBox(height: 20),
                    ElevatedButton(
                      onPressed: () async {
                        try {
                          final printers =
                              await FlutterCitizenPrinter.searchUsbPrinters();
                          log("Found ${printers.length} USB printers");
                          setState(() {
                            usbPrinters = printers;
                            selectedPrinter =
                                printers.isNotEmpty ? printers.first : null;
                          });
                          if (!mounted) return;
                          ScaffoldMessenger.of(context).showSnackBar(
                            SnackBar(
                                content: Text(
                                    'Trovate ${printers.length} stampanti USB')),
                          );
                        } catch (e) {
                          log("Search USB printers error: $e");
                          if (!mounted) return;
                          ScaffoldMessenger.of(context).showSnackBar(
                            SnackBar(
                                content: Text('Errore ricerca stampanti: $e')),
                          );
                        }
                      },
                      child: const Text("Cerca stampanti USB"),
                    ),
                    const SizedBox(height: 20),
                    if (usbPrinters.isNotEmpty) ...[
                      const Text("Stampanti USB trovate:"),
                      const SizedBox(height: 10),
                      ...usbPrinters.map((printer) => Card(
                            child: ListTile(
                              title: Text(printer.displayName),
                              subtitle: Text(
                                  'ID: ${printer.deviceId}\nVendor: ${printer.vendorId}, Product: ${printer.productId}'),
                              leading: Radio<UsbPrinterInfo>(
                                value: printer,
                                groupValue: selectedPrinter,
                                onChanged: (value) {
                                  setState(() {
                                    selectedPrinter = value;
                                  });
                                },
                              ),
                            ),
                          )),
                      const SizedBox(height: 20),
                    ],
                    if (selectedPrinter != null) ...[
                      Text(
                          'Stampante selezionata: ${selectedPrinter!.displayName}'),
                      const SizedBox(height: 10),
                      ElevatedButton(
                        onPressed: () async {
                          try {
                            // Carica un'immagine di esempio (dovrai fornire l'immagine)
                            final ByteData data =
                                await rootBundle.load('assets/sample.bmp');
                            final Uint8List imageBytes =
                                data.buffer.asUint8List();

                            await FlutterCitizenPrinter.printImageUsbSpecific(
                              selectedPrinter!.deviceId,
                              imageBytes,
                            );

                            if (!mounted) return;
                            ScaffoldMessenger.of(context).showSnackBar(
                              const SnackBar(
                                  content:
                                      Text('Stampa inviata con successo!')),
                            );
                          } catch (e) {
                            log("Print error: $e");
                            if (!mounted) return;
                            ScaffoldMessenger.of(context).showSnackBar(
                              SnackBar(content: Text('Errore stampa: $e')),
                            );
                          }
                        },
                        child: const Text("Stampa su stampante selezionata"),
                      ),
                    ],
                    TextFormField(
                      controller: addressController,
                      decoration: InputDecoration(labelText: "IP Address"),
                    ),
                    ElevatedButton(
                      onPressed: () async {
                        try {
                          final ips =
                              await FlutterCitizenPrinter.detectPrinters();
                          log("detected ips: $ips");
                          if (context.mounted) {
                            showDialog(
                              context: context,
                              builder: (_) => AlertDialog(
                                title: Text('Found printers'),
                                content: ListView.builder(
                                  itemCount: ips.length,
                                  itemBuilder: (context, index) {
                                    return ListTile(
                                      title: Text(ips[index].ipAddress),
                                      onTap: () {
                                        setState(() {
                                          addressController.text =
                                              ips[index].ipAddress;
                                        });
                                        Navigator.pop(context);
                                      },
                                    );
                                  },
                                ),
                              ),
                            );
                          }
                        } on PlatformException catch (e) {
                          log("Error: $e");
                          // show a snackbar with the error
                          if (context.mounted) {
                            ScaffoldMessenger.of(context).showSnackBar(
                              SnackBar(
                                content: Text(e.message ??
                                    "Unknown error while detecting printers"),
                              ),
                            );
                          }
                        }
                      },
                      child: Text('Detect Printer'),
                    ),
                    Divider(),
                    ElevatedButton(
                      onPressed: () async {
                        final ByteData data =
                            await rootBundle.load('assets/sample.bmp');
                        final Uint8List bytes = data.buffer.asUint8List();
                        await FlutterCitizenPrinter.printImageUSB(bytes);
                      },
                      child: const Text('Print via USB'),
                    ),
                    const SizedBox(height: 20),
                    ElevatedButton(
                      onPressed: () async {
                        final ByteData data =
                            await rootBundle.load('assets/sample.bmp');
                        final Uint8List bytes = data.buffer.asUint8List();
                        await FlutterCitizenPrinter.printImageWiFi(
                            addressController.text, bytes, 0, 0);
                      },
                      child: const Text('Print via WiFi'),
                    ),
                  ],
                ),
              ),
            ),
          );
        }),
      ),
    );
  }
}
0
likes
140
points
15
downloads

Publisher

unverified uploader

Weekly Downloads

Flutter plugin for Citizen label printer via USB and WiFi.

Repository (GitHub)
View/report issues

Documentation

API reference

License

BSD-3-Clause (license)

Dependencies

flutter

More

Packages that depend on flutter_citizen_printer

Packages that implement flutter_citizen_printer