如何在 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中显示保存的打印机不可用。
我目前正在使用这些库在 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中显示保存的打印机不可用。