import 'dart:typed_data'; import 'package:aman_kassa_flutter/core/locator.dart'; import 'package:aman_kassa_flutter/core/route_names.dart'; import 'package:aman_kassa_flutter/core/services/dialog_service.dart'; import 'package:aman_kassa_flutter/core/services/navigator_service.dart'; import 'package:aman_kassa_flutter/redux/state/setting_state.dart'; import 'package:aman_kassa_flutter/redux/store.dart'; import 'package:aman_kassa_flutter/shared/app_colors.dart'; import 'package:aman_kassa_flutter/widgets/fields/aman_icon_button_horizontal.dart'; import 'package:esc_pos_bluetooth/esc_pos_bluetooth.dart'; import 'package:esc_pos_utils/esc_pos_utils.dart'; import 'package:flutter/material.dart'; import 'package:aman_kassa_flutter/views/settings/printer/PrinterTest.dart'; import 'package:flutter_redux/flutter_redux.dart'; import 'component/setting_item.dart'; class SettingPrinterView extends StatefulWidget { @override _SettingPrinterViewState createState() => _SettingPrinterViewState(); } class _SettingPrinterViewState extends State { NavigatorService _navigatorService = locator(); final DialogService _dialogService = locator(); PrinterBluetoothManager printerManager = PrinterBluetoothManager(); @override void initState() { super.initState(); } void _testPrint() async { printerManager.selectPrinter(PrinterBluetooth(Redux.store.state.settingState.printerBT)); // TODO Don't forget to choose printer's paper const PaperSize paper = PaperSize.mm58; final PosPrintResult res = await printerManager.printTicket( await testTicketImage(paper), chunkSizeBytes: 3096, queueSleepTimeMs: 50 ); _dialogService.showDialog(description: res.msg); } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text('Настройка принтера'), ), body: Padding( padding: const EdgeInsets.symmetric(horizontal: 8.0), child: StoreConnector( converter: (store) => store.state.settingState, builder: (context, vm) { return Column( children: [ SettingItem( title: 'Принтер', name: vm.printerBT?.name, value: vm.printerBT != null ? 'BT: ${vm.printerBT.address} ' : 'не выбран', onTap: () { _navigatorService.push(SettingsPrinterBTRoute); }), Expanded( child: Padding( padding: const EdgeInsets.only(bottom: 24.0), child: Column( mainAxisAlignment: MainAxisAlignment.end, children: [ AmanIconButtonHorizontal( icon: Icons.local_printshop_outlined, title: 'Напечатать тестовую страницу', activeColor: primaryColor, selected: vm.printerBT != null, onPressed: () { _testPrint(); }, ), ], ), ), ) ], ); }), ), ); } }