fix printer

This commit is contained in:
Efril
2026-05-24 00:59:02 +07:00
parent a0610459bf
commit c7ed45a374
8 changed files with 251 additions and 23 deletions
@@ -117,6 +117,13 @@ class PrinterFormBloc extends Bloc<PrinterFormEvent, PrinterFormState> {
final currentOutlet = await _outletRepository.currentOutlet();
// Ambil paper size dari DB, fallback ke state.paper jika belum tersimpan
final savedPrinter = await _printerRepository.getPrinterByCode(e.code);
final paper = savedPrinter.fold(
(_) => int.tryParse(state.paper) ?? 58,
(p) => int.tryParse(p.paper) ?? 58,
);
List<int> printValue = [];
if (e.code == "receipt") {
@@ -124,29 +131,34 @@ class PrinterFormBloc extends Bloc<PrinterFormEvent, PrinterFormState> {
order: Order.mockOrder(),
outlet: currentOutlet,
cashierName: 'Kasir Test',
paper: paper,
);
} else if (e.code == "checker") {
printValue = await PrintUi().printChecker(
order: Order.mockOrder(),
outlet: currentOutlet,
cashierName: 'Kasir Test',
paper: paper,
);
} else if (e.code == 'kitchen') {
printValue = await PrintUi().printKitchen(
order: Order.mockOrder(),
outlet: currentOutlet,
cashierName: 'Kasir Test',
paper: paper,
);
} else if (e.code == 'bar') {
printValue = await PrintUi().printBar(
order: Order.mockOrder(),
outlet: currentOutlet,
cashierName: 'Kasir Test',
paper: paper,
);
} else if (e.code == 'ticket') {
printValue = await PrintUi().printTicket(
order: Order.mockOrder(),
outlet: currentOutlet,
paper: paper,
);
}
@@ -154,7 +166,7 @@ class PrinterFormBloc extends Bloc<PrinterFormEvent, PrinterFormState> {
code: e.code,
name: state.name,
address: e.macAccdress,
paper: state.paper,
paper: paper.toString(),
type: state.type,
);
+1 -1
View File
@@ -10,7 +10,7 @@ abstract class Env {
@dev
class DevEnv implements Env {
@override
String get baseUrl => 'http://192.168.1.13:4000';
String get baseUrl => 'https://api-pos.apskel.id';
@override
String get dbName => "apskel_pos_dev.db"; // example value
@@ -15,8 +15,19 @@ class PrinterDto with _$PrinterDto {
@JsonKey(name: 'updated_at') required DateTime updatedAt,
}) = _PrinterDto;
factory PrinterDto.fromJson(Map<String, dynamic> json) =>
_$PrinterDtoFromJson(json);
factory PrinterDto.fromJson(Map<String, dynamic> json) => _$PrinterDtoFromJson(
// Normalize paper field: SQLite bisa return int atau String
{
...json,
'paper': json['paper']?.toString() ?? '58',
'created_at': json['created_at'] is DateTime
? (json['created_at'] as DateTime).toIso8601String()
: json['created_at'],
'updated_at': json['updated_at'] is DateTime
? (json['updated_at'] as DateTime).toIso8601String()
: json['updated_at'],
},
);
// Optional mapper to domain
Printer toDomain() => Printer(
@@ -674,6 +674,7 @@ class PrinterRepository implements IPrinterRepository {
if (printResult.isLeft()) return printResult.map((_) => unit);
log('Finished printed receipt', name: _logName);
log('Printer Size: ', name: printer.paper);
return right(unit);
} catch (e, stackTrace) {
@@ -21,7 +21,7 @@ class PrintUi {
);
final builder = ReceiptComponentBuilder(
generator: generator,
paperSize: 58,
paperSize: paper,
);
bytes += generator.reset();
@@ -85,7 +85,7 @@ class PrintUi {
);
final builder = ReceiptComponentBuilder(
generator: generator,
paperSize: 58,
paperSize: paper,
);
bytes += generator.reset();
@@ -147,7 +147,7 @@ class PrintUi {
);
final builder = ReceiptComponentBuilder(
generator: generator,
paperSize: 58,
paperSize: paper,
);
for (final item in order.orderItems) {
@@ -198,7 +198,7 @@ class PrintUi {
);
final builder = ReceiptComponentBuilder(
generator: generator,
paperSize: 58,
paperSize: paper,
);
for (final item in order.orderItems) {
@@ -248,7 +248,7 @@ class PrintUi {
);
final builder = ReceiptComponentBuilder(
generator: generator,
paperSize: 58,
paperSize: paper,
);
bytes += generator.reset();
@@ -289,7 +289,7 @@ class PrintUi {
);
final builder = ReceiptComponentBuilder(
generator: generator,
paperSize: 58,
paperSize: paper,
);
bytes += generator.reset();
@@ -355,7 +355,7 @@ class PrintUi {
);
final builder = ReceiptComponentBuilder(
generator: generator,
paperSize: 58,
paperSize: paper,
);
bytes += generator.reset();
@@ -420,7 +420,7 @@ class PrintUi {
);
final builder = ReceiptComponentBuilder(
generator: generator,
paperSize: 58,
paperSize: paper,
);
bytes += generator.reset();
@@ -1,4 +1,5 @@
import 'package:esc_pos_utils_plus/esc_pos_utils_plus.dart';
import 'package:flutter/foundation.dart';
import 'package:intl/intl.dart';
/// Reusable component builder untuk thermal receipt printer
@@ -265,7 +266,11 @@ class ReceiptComponentBuilder {
height: PosTextSize.size1,
width: PosTextSize.size1,
);
if (kDebugMode) {
bytes += textCenter("$paperSize MM", );
}
bytes += feed(paperSize == 80 ? 3 : 1);
bytes += generator.cut();
return bytes;