discoverPrinters static method
Implementation
static DiscoverResult<TcpPrinterInfo> discoverPrinters() async {
String? deviceIp = await NetworkInfo().getWifiIP();
if (deviceIp == null) return [];
final String subnet = deviceIp.substring(0, deviceIp.lastIndexOf('.'));
final List<Future<PrinterDiscovered<TcpPrinterInfo>>> results =
List.generate(255, (index) async {
final host = '$subnet.$index';
try {
final _socket =
await Socket.connect(host, 9100, timeout: Duration(seconds: 5));
_socket.destroy();
return PrinterDiscovered<TcpPrinterInfo>(
name: host,
detail: TcpPrinterInfo(address: _socket.address),
exist: true);
} catch (err) {
return PrinterDiscovered(
name: host,
detail: TcpPrinterInfo(address: InternetAddress(host)),
exist: false);
}
});
final discovered = await Future.wait(results);
return discovered.where((r) => r.exist).toList();
}