bluetooth_pos_printer 1.3.0 copy "bluetooth_pos_printer: ^1.3.0" to clipboard
bluetooth_pos_printer: ^1.3.0 copied to clipboard

A robust Flutter plugin for communicating with Bluetooth thermal (POS) printers. Supports Bluetooth Classic (SPP) on Android and Bluetooth Low Energy (BLE) on iOS.

1.3.0 #

  • Novidade: Reconexão Automática (Auto-Reconnect): O pacote agora memoriza a última impressora conectada com sucesso. Caso haja queda de energia ou perda de sinal (saída da área de alcance), o plugin mudará automaticamente para o novo status PrinterStatus.reconnecting e tentará restabelecer a conexão de forma silenciosa a cada 10 segundos, num limite de até 5 minutos.
  • Novidade: Status em Tempo Real no Android: Implementada a escuta ativa do BroadcastReceiver nativo para ACTION_ACL_DISCONNECTED, garantindo que quedas de conexão no Android sejam comunicadas instantaneamente ao Dart, igualando o comportamento imediato nativo do iOS (CoreBluetooth).
  • Nova funcionalidade na UI: Adicionado o estado PrinterStatus.reconnecting à enumeração PrinterStatus.
  • Filtro de Dispositivos Fantasmas (Unknown): O escaneamento no Android e iOS agora ignora proativamente dispositivos que retornam nomes em branco ou nulos, limpando a lista e melhorando drasticamente a usabilidade para os usuários finais.

1.2.3 #

  • Atualizado os links de repositório, homepage e issue tracker no pubspec.yaml para a organização senuntech.

1.2.2 #

  • Correção WebUSB: Resolvido o problema de falha silenciosa na conexão WebUSB quando a configuração ativa do hardware (configuration) inicializava nula (muito comum em sistemas operacionais onde a porta não fora configurada previamente). Agora a seleção da configuração (selectConfiguration) é forçada ativamente antes da requisição da interface.
  • Adicionado logs de erro mais verbosos (print()) para claimInterface na plataforma Web.

1.2.1 #

  • WebUSB API: A implementação da Web foi refatorada de Web Serial para WebUSB API. Isso permite que o navegador liste automaticamente apenas impressoras (escondendo mouses/teclados) e permite conexão 100% automática e silenciosa a partir do segundo uso.
  • Correções (Lints): Limpeza de código e remoção de bad practices (como empty catches) detectadas no ambiente Web.

1.2.0 #

  • Suporte a Windows (Desktop): Adicionado suporte nativo à plataforma Windows via integração híbrida com o spooler (PowerShell), permitindo descobrir e imprimir em impressoras USB/Bluetooth já pareadas no sistema.
  • Suporte a Web: Adicionado suporte experimental a navegadores baseados em Chromium via Web Serial API, possibilitando conexão direta via porta USB/Serial sem intermediários ou aplicativos locais.
  • Refatoração Híbrida: O plugin agora adota uma estrutura inteligente (dart.library.io / dart.library.js_interop) mesclando canais nativos (Kotlin/Swift) com execuções Dart-puras em desktop e web.

1.1.1 #

  • Correção Crítica de Conexão (Fix 12):
    • Problema: Conexões via Bluetooth Clássico (SPP) falhavam para dispositivos que não respondiam imediatamente ao comando startDiscovery do Android.
    • Solução: Implementada lógica de retentativa (retry) com delay crescente. O plugin agora tenta iniciar a descoberta até 3 vezes em intervalos curtos antes de declarar falha, garantindo a inicialização mesmo sob condições de hardware sensíveis.

1.1.0 #

  • Novidade: Classificação de Tipo de Dispositivo: Adicionada a propriedade type à classe BluetoothPrinterDevice para categorizar dispositivos mapeando-os como 'printer', 'phone', 'computer', 'audio', 'peripheral' ou 'unknown'.
  • Mapeamento no Android: Implementada leitura nativa do BluetoothClass do dispositivo pareado ou descoberto na busca para classificar os tipos usando APIs oficiais do sistema operacional.
  • Mapeamento no iOS: Desenvolvida heurística de detecção no Swift baseada em chaves de nomes conhecidos (como "mtp", "mpt", "print", "buds", etc.) e serviços anunciados (ex: checagem de UUID de serviço de impressão 18F0).
  • Visual Premium no Exemplo: O aplicativo de exemplo agora exibe ícones representativos e coloridos na lista de busca de acordo com o tipo do dispositivo detectado.

1.0.1 #

  • Novidade: Verificação de Estado do Bluetooth: Adicionado o método isBluetoothEnabled() em ambas as plataformas (Android e iOS) permitindo verificar se o Bluetooth está ativo antes de tentar fazer a busca de dispositivos.
  • Correção no iOS (Condição de Corrida & Travamentos): Implementado enfileiramento seguro baseado em classes (PendingAction) para chamadas iniciais enquanto o CBCentralManager é inicializado assincronamente no iOS. Isso resolve de vez o erro "Bluetooth is not powered on" e impede travamentos infinitos da interface.
  • Aumento do Timeout de Inicialização (15s): O tempo limite da fila de inicialização no iOS foi expandido para 15 segundos, dando margem confortável para o usuário aceitar o diálogo de permissão do sistema sem cancelar o escaneamento por timeout.
  • Nomes de Dispositivos BLE corrigidos no iOS: Agora o plugin lê a chave CBAdvertisementDataLocalNameKey dos dados de anúncio caso o periférico venha com nome nulo inicialmente, evitando mostrar dispositivos como "Unknown" na busca.
  • Ajuste de Permissões no Exemplo: Adicionadas as chaves obrigatórias NSBluetoothAlwaysUsageDescription e NSBluetoothPeripheralUsageDescription no Info.plist do aplicativo de exemplo.

1.0.0 #

  • Breaking Change: Substituição de flags booleanas includePaired e includeActive pelo enum tipado BluetoothScanMode no método scan().
  • Modos de Busca Personalizados: Adicionado suporte para configurar o comportamento do escaneamento de Bluetooth através de BluetoothScanMode:
    • active (padrão): Busca apenas novos dispositivos ativos e visíveis próximos.
    • paired: Retorna apenas os dispositivos Bluetooth já pareados no sistema operacional.
    • all: Combina ambos, retornando pareados e fazendo busca ativa.
  • Interface de Exemplo em Material 3: Nova interface premium e moderna no aplicativo /example com SegmentedButton nativo do Material 3 para alternância de modos de busca em tempo real.
  • Permissões Refinadas no Android 12+: Implementação robusta das permissões perigosas de Bluetooth no Android usando a flag neverForLocation no manifesto, permitindo buscas de impressoras sem requisição invasiva de localização física em dispositivos mais recentes.
  • Estabilidade Geral: Correção de possíveis vazamentos de conexões e manipulação resiliente a exceções e falhas na inicialização do adaptador Bluetooth.

0.0.1 #

  • Initial release of the bluetooth_pos_printer plugin.
  • Supports sending RAW bytes in chunks to thermal POS printers to prevent buffer overflow.
  • Supports Classic Bluetooth (SPP) on Android and Bluetooth Low Energy (BLE) on iOS.
  • Reactive connection status stream (statusStream).
  • Included a fully-featured example application.
0
likes
0
points
316
downloads

Publisher

unverified uploader

Weekly Downloads

A robust Flutter plugin for communicating with Bluetooth thermal (POS) printers. Supports Bluetooth Classic (SPP) on Android and Bluetooth Low Energy (BLE) on iOS.

Repository (GitHub)
View/report issues

License

unknown (license)

Dependencies

flutter, path_provider, plugin_platform_interface, web

More

Packages that depend on bluetooth_pos_printer

Packages that implement bluetooth_pos_printer