printerWidget method

Future<void> printerWidget(
  1. GlobalKey<State<StatefulWidget>> key, {
  2. required dynamic onMessage(
    1. String
    ),
  3. required dynamic onPop(
    1. bool
    ),
  4. required StoneTechCredentialsModel stoneCredentials,
})

Implementation

Future<void> printerWidget(
  GlobalKey key, {
  required Function(String) onMessage,
  required Function(bool) onPop,
  required StoneTechCredentialsModel stoneCredentials,
}) async {
  try {
    credentials = stoneCredentials;
    if (!StoneTech.isPinpadActivated) {
      onMessage('Ativando terminal');
      await initialize(
        stoneCredentials: credentials,
        onMessage: onMessage,
        onPop: onPop,
        onSuccess: () {
          printerWidget(
            key,
            onMessage: onMessage,
            onPop: onPop,
            stoneCredentials: stoneCredentials,
          );
        },
      );
      onMessage('Ativando terminal\nAguarde...');
      return;
    }
    onMessage('Gerando comprovante...');
    await Future.delayed(const Duration(seconds: 1));
    final printerHelper = StonePrinterLayoutHelper();

    final result = await printerHelper.generateReceipt(key);
    if (result == null) {
      onMessage('Erro ao gerar recibo');
      await Future.delayed(const Duration(seconds: 3));
      onPop(false);
      return;
    }
    onMessage('Aguarde enquanto o comprovante é gerado...');

    onMessage('Enviando para a impressora...');
    stone.payment.printFromBase64(result.base64String);
    await Future.delayed(const Duration(seconds: 3));
    onPop(true);
  } catch (e) {
    onMessage('*Erro ao gerar recibo: $e');
    onPop(false);
  }
}