import 'dart:developer'; import 'package:flutter/material.dart'; import 'package:max_print_plus/print/max_print.dart'; void main() { runApp(const MyApp()); } class MyApp extends StatelessWidget { const MyApp({super.key}); // This widget is the root of your application. @override Widget build(BuildContext context) { return MaterialApp( title: 'Flutter Demo', theme: ThemeData( primarySwatch: Colors.blue, ), home: const MyHomePage(title: 'Flutter Demo Home Page'), ); } } class MyHomePage extends StatefulWidget { const MyHomePage({super.key, required this.title}); final String title; @override State createState() => _MyHomePageState(); } class _MyHomePageState extends State { var countryCode = 'ID'; @override Widget build(BuildContext context) { return Scaffold( backgroundColor: Colors.white, appBar: AppBar( title: Text(widget.title), ), body: Center( child: Padding( padding: const EdgeInsets.all(16), child: Column( children: [ ElevatedButton( onPressed: () { // _printReceiveTest(false); }, child: Text('Click me')), ElevatedButton( onPressed: () { Navigator.push(context, MaterialPageRoute(builder: (context) => MaxPrint())); }, child: Text('Print page mode')), ], ), ), )); } // Future _printReceiveTest(bool isPage) async { // List bytes = []; // // Xprinter XP-N160I // final profile = await CapabilityProfile.load(name: 'XP-N160I'); // // PaperSize.mm80 or PaperSize.mm58 // final generator = Generator(PaperSize.mm58, profile); // bytes += generator.setGlobalCodeTable('CP1252'); // bytes += generator.text('MM TOYS', // styles: const PosStyles(align: PosAlign.center, bold: true)); // bytes += generator.text('Cikijing, Talaga, Bantarujeg, Rancah', // styles: const PosStyles(align: PosAlign.center, bold: true)); // bytes += generator.row([ // PosColumn( // width: 6, // text: 'PENJUALAN :', // styles: const PosStyles(align: PosAlign.left, codeTable: 'CP1252')), // PosColumn( // width: 6, // text: '2024-03-14', // styles: const PosStyles(align: PosAlign.right, codeTable: 'CP1252')), // ]); // bytes += generator.row([ // PosColumn( // width: 8, // text: 'PELANGGAN : UMUM-RCH', // styles: const PosStyles(align: PosAlign.left, codeTable: 'CP1252')), // PosColumn( // width: 4, // text: '15:30', // styles: const PosStyles(align: PosAlign.right, codeTable: 'CP1252')), // ]); // bytes += generator.text('--------------------------------', // styles: const PosStyles(align: PosAlign.center)); // bytes += generator.row([ // PosColumn( // width: 6, // text: 'Qty', // styles: const PosStyles(align: PosAlign.left, codeTable: 'CP1252')), // PosColumn( // width: 6, // text: 'Nama Produk', // styles: const PosStyles(align: PosAlign.left, codeTable: 'CP1252')), // ]); // bytes += generator.row([ // PosColumn( // width: 3, // text: 'Harga', // styles: const PosStyles(align: PosAlign.right, codeTable: 'CP1252')), // PosColumn( // width: 3, // text: 'Dis.', // styles: const PosStyles(align: PosAlign.right, codeTable: 'CP1252')), // PosColumn( // width: 3, // text: 'PPn', // styles: const PosStyles(align: PosAlign.right, codeTable: 'CP1252')), // PosColumn( // width: 3, // text: 'Netto', // styles: const PosStyles(align: PosAlign.right, codeTable: 'CP1252')), // ]); // bytes += generator.text('--------------------------------', // styles: const PosStyles(align: PosAlign.center)); // // Dummy transaction data // List dummyProducts = [ // 'Product 1', // 'Product 2', // 'Product 3', // ]; // for (var productName in dummyProducts) { // bytes += generator.row([ // PosColumn( // width: 12, // text: '2 ${productName.toUpperCase()}', // styles: const PosStyles( // align: PosAlign.left, // codeTable: 'CP1252', // )), // ]); // bytes += generator.row([ // PosColumn( // width: 3, // text: '10.0', // styles: const PosStyles(align: PosAlign.left, codeTable: 'CP1252')), // PosColumn( // width: 3, // text: '0.0', // styles: // const PosStyles(align: PosAlign.right, codeTable: 'CP1252')), // PosColumn( // width: 3, // text: '', // styles: // const PosStyles(align: PosAlign.right, codeTable: 'CP1252')), // PosColumn( // width: 3, // text: '20.0', // styles: // const PosStyles(align: PosAlign.right, codeTable: 'CP1252')), // ]); // } // bytes += generator.text('--------------------------------', // styles: const PosStyles(align: PosAlign.center)); // // Dummy total and payment data // bytes += generator.row([ // PosColumn( // width: 4, // text: 'Jumlah : 3', // styles: const PosStyles(align: PosAlign.left, codeTable: 'CP1252')), // PosColumn( // width: 4, // text: 'Item : 6', // styles: const PosStyles(align: PosAlign.center, codeTable: 'CP1252')), // PosColumn( // width: 4, // text: '33.0', // styles: const PosStyles(align: PosAlign.right, codeTable: 'CP1252')), // ]); // // Dummy grand total, payment, change, and cashier data // bytes += generator.row([ // PosColumn( // width: 6, // text: 'Grand Total', // styles: const PosStyles(align: PosAlign.left, codeTable: 'CP1252')), // PosColumn( // width: 1, // text: ':', // styles: const PosStyles(align: PosAlign.left, codeTable: 'CP1252')), // PosColumn( // width: 5, // text: '33.0', // styles: const PosStyles(align: PosAlign.right, codeTable: 'CP1252')), // ]); // bytes += generator.row([ // PosColumn( // width: 6, // text: 'Pembayaran', // styles: const PosStyles(align: PosAlign.left, codeTable: 'CP1252')), // PosColumn( // width: 1, // text: ':', // styles: const PosStyles(align: PosAlign.left, codeTable: 'CP1252')), // PosColumn( // width: 5, // text: '50.0', // styles: const PosStyles(align: PosAlign.right, codeTable: 'CP1252')), // ]); // bytes += generator.row([ // PosColumn( // width: 6, // text: 'Kembalian', // styles: const PosStyles(align: PosAlign.left, codeTable: 'CP1252')), // PosColumn( // width: 1, // text: ':', // styles: const PosStyles(align: PosAlign.left, codeTable: 'CP1252')), // PosColumn( // width: 5, // text: '17.0', // styles: const PosStyles(align: PosAlign.right, codeTable: 'CP1252')), // ]); // bytes += generator.row([ // PosColumn( // width: 6, // text: 'Kasir', // styles: const PosStyles(align: PosAlign.left, codeTable: 'CP1252')), // PosColumn( // width: 6, // text: 'Anisa', // styles: const PosStyles(align: PosAlign.right, codeTable: 'CP1252')), // ]); // bytes += generator.text('--------------------------------', // styles: const PosStyles(align: PosAlign.center)); // bytes += generator.text( // 'BARANG YANG SUDAH DI BELI TIDAK DAPAT DITUKAR / DIKEMBALIKAN', // styles: const PosStyles(align: PosAlign.center)); // bytes += generator.text('TERIMA KASIH', // styles: const PosStyles(align: PosAlign.center)); // if (isPage == false) { // _showPrintDialog(bytes, generator); // } else { // Navigator.push( // context, // MaterialPageRoute( // builder: (context) => MaxPrintPage( // bytes: bytes, // generator: generator, // title: 'Test', // description: 'Test', // onSuccess: () { // Navigator.pop(context); // log('Printed'); // }, // appBar: null, // ))); // } // } // _showPrintDialog(List bytes, Generator generator) { // return showDialog( // context: context, // builder: (BuildContext context) { // return MaxPrintDialog( // bytes: bytes, // generator: generator, // title: 'Test', // description: 'Test', // ); // }, // ); // } }