aman-kassa-flutter/lib/views/settings/setting_printer_view.dart

98 lines
3.5 KiB
Dart

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<SettingPrinterView> {
NavigatorService _navigatorService = locator<NavigatorService>();
final DialogService _dialogService = locator<DialogService>();
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<AppState, SettingState>(
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();
},
),
],
),
),
)
],
);
}),
),
);
}
}