From 86e71b0ba2c375b51c7698857d29a05bc4f8cd77 Mon Sep 17 00:00:00 2001 From: ShelmoLucas Date: Fri, 8 May 2026 12:11:02 -0300 Subject: [PATCH] fix: prevent crash on missing elgin lib and refactor method handler --- .../brasizza/marcus/elgin/ElginPlugin.java | 41 ++++++++++++------- 1 file changed, 26 insertions(+), 15 deletions(-) diff --git a/android/src/main/java/br/com/brasizza/marcus/elgin/ElginPlugin.java b/android/src/main/java/br/com/brasizza/marcus/elgin/ElginPlugin.java index de43283..6be98cd 100644 --- a/android/src/main/java/br/com/brasizza/marcus/elgin/ElginPlugin.java +++ b/android/src/main/java/br/com/brasizza/marcus/elgin/ElginPlugin.java @@ -43,13 +43,17 @@ public void onAttachedToEngine(@NonNull FlutterPluginBinding flutterPluginBindin @Override public void onMethodCall(@NonNull MethodCall call, @NonNull Result result) { - switch(call.method){ - default: - result.notImplemented(); - case "getPlatformVersion": - result.success("Android " + android.os.Build.VERSION.RELEASE); - break; + if (call.method.equals("getPlatformVersion")) { + result.success("Android " + android.os.Build.VERSION.RELEASE); + return; + } + + if (printer == null) { + result.error("PRINTER_UNAVAILABLE", "A biblioteca da Elgin não está disponível ou não foi inicializada corretamente.", null); + return; + } + switch (call.method) { case "startInternalPrinter": HashMap printerArgs = call.argument("printerArgs"); int resultPrinter = printer.printerInternalImpStart(printerArgs); @@ -172,32 +176,39 @@ public void onMethodCall(@NonNull MethodCall call, @NonNull Result result) { case "printTEF": - String cupomTEF = (String) call.argument("cupomTEF"); + String cupomTEF = (String) call.argument("cupomTEF"); int tefReturn = printer.imprimeCupomTEF(cupomTEF); result.success(tefReturn); break; + default: + result.notImplemented(); + break; } } @Override public void onDetachedFromEngine(@NonNull FlutterPluginBinding binding) { - channel.setMethodCallHandler(null); + if (channel != null) { + channel.setMethodCallHandler(null); + } } @Override -public void onAttachedToActivity(ActivityPluginBinding binding) { - + public void onAttachedToActivity(ActivityPluginBinding binding) { activity = binding.getActivity(); - printer = new Printer(activity); + try { + printer = new Printer(activity); + } catch (Throwable t) { + Log.e("elgin", "Erro ao inicializar a impressora Elgin: " + t.getMessage()); + printer = null; + } - channel = new MethodChannel(this.binaryMessenger, "elgin"); + channel = new MethodChannel(this.binaryMessenger, "elgin"); channel.setMethodCallHandler(this); - - -} + } @Override public void onDetachedFromActivity(){