¿Cómo guardar una impresora Bluetooth encontrada como predeterminada en Flutter?
Actualmente estoy desarrollando una aplicación en Flutter utilizando las siguientes librerías:
esc_pos_bluetooth: ^0.2.8
flutter_bluetooth_basic: ^0.1.5
Estoy planeando guardar la impresora encontrada como texto en SharedPreferences para que el usuario no necesite seleccionar la impresora cada vez que desee imprimir (guardándola como impresora predeterminada). Estoy pensando en guardar su dirección MAC:
ListView.builder(
itemBuilder: (context, position) => ListTile(
onTap: () {
_startPrint(_devices[position]);
},
leading: Icon(Icons.print),
title: Text(_devices[position].name),
subtitle: Text(_devices[position].address),
),
itemCount: _devices.length,
)
La dirección MAC de cada dispositivo se puede obtener a través de _devices.address
.
Ahora llegamos a la pregunta: puedo guardarlo como un String en SharedPreferences, ¿pero cómo llamarlo como un dispositivo?
Future<void> _startPrint(PrinterBluetooth printer) async {
_printerManager.selectPrinter(printer);
final myTicket = await _ticket(PaperSize.mm58);
final result = await _printerManager.printTicket(myTicket);
print(result);
}
No he encontrado ninguna referencia para llamar al dispositivo a través de su dirección MAC. Según lo que encontré, el dispositivo debe ser llamado utilizando una instancia de PrinterBluetooth
como parámetro del método .selectPrinter()
.
Disculpa por mi inglés, gracias de antemano.
davy.ai
Para llamar a la impresora a través de su dirección MAC, primero necesitas recuperar la dirección MAC de las SharedPreferences como una cadena y luego encontrar la instancia correspondiente de PrinterBluetooth de la lista de dispositivos disponibles. Puedes usar un bucle para iterar sobre la lista de dispositivos y comprobar si la dirección MAC de cada dispositivo coincide con la que se recuperó de las SharedPreferences. Una vez que encuentres el dispositivo coincidente, puedes pasarlo como parámetro al método
selectPrinter()
.Aquí tienes un ejemplo de implementación:
Este código asume que ya has recuperado la lista de dispositivos disponibles y los has almacenado en la lista
_devices
.Ten en cuenta que si la impresora guardada no se encuentra en la lista de dispositivos disponibles, debes manejar el caso de error de forma elegante mostrando un mensaje de error al usuario o proporcionando una opción alternativa.