network_printer_plugin 0.0.1
network_printer_plugin: ^0.0.1 copied to clipboard
Plugin for communicate with network thermal printer
network_printer_plugin #
Plugin Flutter untuk mencetak ke printer jaringan (network printer) seperti thermal printer via TCP/IP.
Fitur #
- 🖨️ Koneksi ke printer jaringan via TCP/IP
- 📝 Mengirim data ESC/POS ke printer
- 🔌 Manajemen koneksi (connect, write, disconnect)
- ⚡ Simple dan mudah digunakan
Instalasi #
Tambahkan dependensi ke file pubspec.yaml:
dependencies:
network_printer_plugin: ^0.0.1
esc_pos_utils: ^1.1.0 # Untuk generate ESC/POS commands
Kemudian jalankan:
flutter pub get
Penggunaan #
Import Package #
import 'package:network_printer_plugin/network_printer_plugin.dart';
import 'package:esc_pos_utils/esc_pos_utils.dart';
Contoh Dasar #
// 1. Buat instance NetworkPrinter
var printer = NetworkPrinter();
// 2. Koneksi ke printer (gunakan IP address dan port printer Anda)
await printer.connect("192.168.0.101", 9100);
// 3. Kirim data ke printer
await printer.write(bytes);
// 4. Tutup koneksi
await printer.disconnect();
Contoh Lengkap #
Berikut contoh lengkap untuk mencetak berbagai format text dan barcode:
import 'package:esc_pos_utils/esc_pos_utils.dart';
import 'package:flutter/material.dart';
import 'package:network_printer_plugin/network_printer_plugin.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text('Network Printer Example'),
),
body: Center(
child: ElevatedButton(
onPressed: () async {
// Load capability profile untuk printer
final profile = await CapabilityProfile.load();
// Buat generator untuk paper size 80mm
var generator = Generator(PaperSize.mm80, profile);
List<int> bytes = [];
// Print text biasa
bytes += generator.text('Regular text: Hello World!');
// Print text dengan karakter spesial
bytes += generator.text('Special chars: àÀ èÈ éÉ ûÛ',
styles: PosStyles(codeTable: 'CP1252'));
// Print text dengan style
bytes += generator.text('Bold text',
styles: PosStyles(bold: true));
bytes += generator.text('Reverse text',
styles: PosStyles(reverse: true));
bytes += generator.text('Underlined text',
styles: PosStyles(underline: true), linesAfter: 1);
// Print text dengan alignment
bytes += generator.text('Align left',
styles: PosStyles(align: PosAlign.left));
bytes += generator.text('Align center',
styles: PosStyles(align: PosAlign.center));
bytes += generator.text('Align right',
styles: PosStyles(align: PosAlign.right), linesAfter: 1);
// Print dalam kolom
bytes += generator.row([
PosColumn(
text: 'Item',
width: 6,
styles: PosStyles(align: PosAlign.left),
),
PosColumn(
text: 'Qty',
width: 3,
styles: PosStyles(align: PosAlign.center),
),
PosColumn(
text: 'Price',
width: 3,
styles: PosStyles(align: PosAlign.right),
),
]);
// Print text dengan ukuran besar
bytes += generator.text('LARGE TEXT',
styles: PosStyles(
height: PosTextSize.size2,
width: PosTextSize.size2,
));
// Print barcode
final List<int> barData = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 4];
bytes += generator.barcode(Barcode.upcA(barData));
// Feed paper dan cut
bytes += generator.feed(2);
bytes += generator.cut();
// Kirim ke printer
var printer = NetworkPrinter();
try {
await printer.connect("192.168.0.101", 9100);
await printer.write(bytes);
await printer.disconnect();
print('Print berhasil!');
} catch (e) {
print('Print gagal: $e');
}
},
child: const Text('Test Print'),
),
),
),
);
}
}
API Reference #
NetworkPrinter Class #
Methods
connect(String host, int port)
Membuat koneksi ke printer jaringan.
Parameters:
host(String): IP address printer (contoh: "192.168.0.101")port(int): Port printer (umumnya 9100 untuk thermal printer)
Returns: Future<void>
Throws: Exception jika koneksi gagal
Example:
await printer.connect("192.168.0.101", 9100);
write(List<int> data)
Mengirim data byte ke printer.
Parameters:
data(List
Returns: Future<void>
Throws: Exception jika pengiriman data gagal
Example:
await printer.write(bytes);
disconnect()
Menutup koneksi ke printer.
Returns: Future<void>
Throws: Exception jika pemutusan koneksi gagal
Example:
await printer.disconnect();
Tips & Troubleshooting #
Menemukan IP Address Printer #
- Print configuration page dari printer Anda
- Atau gunakan network scanner tools
- Pastikan perangkat Anda dan printer dalam satu jaringan
Port yang Umum Digunakan #
- 9100: Port standar untuk RAW printing (paling umum)
- 9101, 9102: Port alternatif pada beberapa printer
Error Handling #
Selalu gunakan try-catch untuk menangani error:
try {
var printer = NetworkPrinter();
await printer.connect("192.168.0.101", 9100);
await printer.write(bytes);
await printer.disconnect();
} catch (e) {
print('Error: $e');
// Handle error sesuai kebutuhan
}
Timeout Connection #
Koneksi memiliki timeout 5 detik. Jika printer tidak merespons dalam waktu tersebut, koneksi akan gagal.
Kompatibilitas #
Plugin ini mendukung printer yang support ESC/POS commands, termasuk:
- Thermal receipt printers
- POS printers
- Network-enabled printers dengan protokol TCP/IP
Lisensi #
Lihat file LICENSE untuk informasi lebih lanjut.
Kontribusi #
Kontribusi sangat diterima! Silakan buat issue atau pull request di repository ini.