import 'package:flutter/material.dart'; import 'package:google_fonts/google_fonts.dart'; import 'package:intl/intl.dart'; // Untuk format angka import 'package:cashumit/models/receipt_item.dart'; /// Widget untuk menampilkan satu item dalam struk. /// /// Widget ini murni untuk tampilan dan tidak memiliki logika interaksi sendiri. /// Interaksi seperti tap (edit) atau long-press (delete) ditangani oleh /// widget induk (parent) yang membungkusnya dalam GestureDetector. class ReceiptItemWidget extends StatelessWidget { final ReceiptItem item; const ReceiptItemWidget({ super.key, required this.item, }); /// Memformat angka menjadi format mata uang Rupiah String _formatRupiah(double amount) { // Menggunakan NumberFormat untuk memformat angka final formatter = NumberFormat("#,##0", "id_ID"); return "Rp ${formatter.format(amount)}"; } @override Widget build(BuildContext context) { final courierPrime = GoogleFonts.courierPrime( textStyle: const TextStyle( fontSize: 14, height: 1.2, ), ); return Container( width: double.infinity, padding: const EdgeInsets.symmetric(horizontal: 8.0, vertical: 4.0), color: Colors.white, child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ // Nama item Expanded( flex: 4, child: Text( item.description, style: courierPrime, overflow: TextOverflow.ellipsis, ), ), // Quantity Expanded( flex: 1, child: Text( item.quantity.toString(), textAlign: TextAlign.center, style: courierPrime, ), ), // Harga Expanded( flex: 2, child: Text( _formatRupiah(item.price), textAlign: TextAlign.right, style: courierPrime, ), ), // Total Expanded( flex: 2, child: Text( _formatRupiah(item.total), textAlign: TextAlign.right, style: courierPrime, ), ), ], ), ); } }