flutter_citizen_printer 0.0.6
flutter_citizen_printer: ^0.0.6 copied to clipboard
Flutter plugin for Citizen label printer via USB and WiFi.
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'),
),
],
),
),
),
);
}),
),
);
}
}