ios version - 1

migrate_to_ns
Serik Uvaissov 2022-02-18 09:43:28 +06:00
parent 95aeb07fc8
commit 005c00071d
3 changed files with 54 additions and 29 deletions

View File

@ -114,6 +114,8 @@ class BluePrintService extends BaseService {
} else if (isIos) {
await _bluetoothDeviceIOS?.disconnect();
}
print('disconnected');
response = true;
} catch (e) {
print('Error $e');
@ -124,16 +126,30 @@ class BluePrintService extends BaseService {
Future<bool> printBytes(Uint8List bytes,
{int chunkSizeBytes = 20, int queueSleepTimeMs = 20}) async {
if (isAndroid) {
await _printAndroid(bytes, chunkSizeBytes, queueSleepTimeMs);
} else if (isIos) {
await _printIos(bytes);
Map<String, dynamic> config = Map();
final len = bytes.length;
List<List<int>> chunks = [];
for (var i = 0; i < len; i += chunkSizeBytes) {
var end = (i + chunkSizeBytes < len) ? i + chunkSizeBytes : len;
chunks.add(bytes.sublist(i, end));
}
for (var i = 0; i < chunks.length; i += 1) {
if (isAndroid) {
await _printAndroid(chunks[i], config);
} else if (isIos) {
await _printIos(Uint8List.fromList(chunks[i]), config);
}
await Future.delayed(Duration(milliseconds: queueSleepTimeMs));
}
return true;
}
Future<void> _printIos(Uint8List bytes) async {
Future<void> _printIos(Uint8List bytes,Map<String, dynamic> config) async {
final List<flutter_blue.BluetoothService> bluetoothServices =
await _bluetoothDeviceIOS?.discoverServices() ??
<flutter_blue.BluetoothService>[];
@ -149,18 +165,9 @@ class BluePrintService extends BaseService {
await characteristic.write(bytes, withoutResponse: true);
}
Future<void> _printAndroid(Uint8List bytes, int chunkSizeBytes, int queueSleepTimeMs) async {
Map<String, dynamic> config = Map();
final len = bytes.length;
List<List<int>> chunks = [];
for (var i = 0; i < len; i += chunkSizeBytes) {
var end = (i + chunkSizeBytes < len) ? i + chunkSizeBytes : len;
chunks.add(bytes.sublist(i, end));
}
Future<void> _printAndroid(List<int> chunk ,Map<String, dynamic> config) async {
for (var i = 0; i < chunks.length; i += 1) {
await _bluetoothAndr.rawBytes(config, chunks[i]);
await Future.delayed(Duration(milliseconds: queueSleepTimeMs));
}
await _bluetoothAndr.rawBytes(config, chunk);
}
}

View File

@ -61,6 +61,17 @@ class _ImageShowContainerState extends State<ImageShowContainer> {
}
}
@override
void dispose() {
disconnect();
super.dispose();
}
void disconnect() async {
await printerManager.disconnect();
}
void _print() async {
final SettingState state = Redux.store!.state.settingState!;
if (state.printerBT == null) {
@ -107,7 +118,7 @@ class _ImageShowContainerState extends State<ImageShowContainer> {
print(e);
}
await Future.delayed(Duration(seconds: 15));
await printerManager.disconnect();
setState(() {
_printing = false;
});

View File

@ -41,6 +41,15 @@ class _SettingPrinterViewState extends State<SettingPrinterView> {
super.initState();
_permission();
}
@override
void dispose() {
disconnect();
super.dispose();
}
disconnect() async {
await printerManager.disconnect();
}
void _testPrint() async {
setState(() {
@ -49,12 +58,11 @@ class _SettingPrinterViewState extends State<SettingPrinterView> {
try {
final SettingState state = Redux.store!.state.settingState!;
printerManager.device = state.printerBT!;
bool isConnected = await printerManager.connect();
if(isConnected == false) {
await Future.delayed(Duration(seconds: 3));
await printerManager.disconnect();
return;
}
await disconnect();
await Future.delayed(Duration(seconds: 1));
await printerManager.connect();
await Future.delayed(Duration(seconds: 3));
bool isIos = Platform.isIOS;
int chunkSizeBytes = 3096;
@ -77,14 +85,14 @@ class _SettingPrinterViewState extends State<SettingPrinterView> {
Uint8List.fromList(await testTicketImage(paper)),
chunkSizeBytes: chunkSizeBytes,
queueSleepTimeMs: queueSleepTimeMs);
_dialogService.showDialog(description: 'result is $res');
//_dialogService.showDialog(description: 'result is $res');
} else {
final bool res = await printerManager.printBytes(
Uint8List.fromList(await printTextCheck(
paper, state.printerEncoding!, exampleJson['check_text'])),
chunkSizeBytes: chunkSizeBytes,
queueSleepTimeMs: queueSleepTimeMs);
_dialogService.showDialog(description: 'result is $res');
//_dialogService.showDialog(description: 'result is $res');
}
} catch (e) {
print('ERROR');
@ -92,8 +100,7 @@ class _SettingPrinterViewState extends State<SettingPrinterView> {
}
//10 sec safe disconnect
await Future.delayed(Duration(seconds: 14));
await printerManager.disconnect();
await Future.delayed(Duration(seconds: 3));
setState(() {
_printing = false;
});