如何在 Flutter 中将找到的蓝牙打印机保存为默认值?

How to save found bluetooth printer as default in Flutter?

我目前正在使用这些库在 Flutter 中开发应用程序:

esc_pos_bluetooth: ^0.2.8
flutter_bluetooth_basic: ^0.1.5

我计划将找到的打印机保存为 SharedPreference 中的文本,这样用户就不需要 select 每次打印时都需要打印机(将其保存为默认打印机),我正在考虑保存这是 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,
)

每个设备 MAC 地址都可以从 _devices.address 获取。

现在问题来了,我可以在SharedPreferences中保存为String,但是作为设备如何调用呢?

Future<void> _startPrint(PrinterBluetooth printer) async {
    _printerManager.selectPrinter(printer);
    final myTicket = await _ticket(PaperSize.mm58);
    final result = await _printerManager.printTicket(myTicket);
    print(result);
}

我没有找到任何通过它的 MAC 地址调用设备的参考资料。根据我的发现,需要使用 PrinterBluetooth 实例作为 .selectPrinter() 方法的参数来调用设备。

对不起我的英语,提前致谢。

好吧,这里没有方法可以帮助我们 select 使用 mac 地址的打印机。

您可以选择两种方式。

1) 简单的一个很好的检查可用性的方法: 存储 mac 地址,扫描可用打印机并获取 mac 地址匹配的打印机实例。

     printerManager.scanResults.listen((devices) async {
      
      devices.forEach((printer) => 
        print(printer);
        //get saved printer
        if(printer.address == "your stored string"){
        //store the element.
        }

        );
      });

2. 比较复杂,需要花很多心思,将完整的 BluetoothPrinter 作为 JSON 字符串存储在共享首选项中,并使用 flutter_bluetooth_basic 包的fromJson 方法传递给 PrinterBluetooth,您可以进一步探索。 请注意,这种方式无法确保您的打印机是否可用。

因此,如果您在方法一中找不到您存储的设备,您可以在UI中显示保存的打印机不可用。