lan_scanner badge GitHub build status

Dart / Flutter package that allows discovering network devices in local network (LAN) via multi-threaded ICMP pings.

Note: This library is intended to be used on Class C networks.

iOS platform is currently not supported. This is due to a compatibility issue with the underlying ping library.
Blocking factors:
Issue #1
Issue #2 page | API reference

Getting Started

Add the package to your pubspec.yaml:

lan_scanner: ^3.5.0

Import the library:

import 'package:lan_scanner/lan_scanner.dart';

Create an instance of the class and call icmpScan() on it:

final scanner = LanScanner();

final stream = scanner.icmpScan('192.168.0', progressCallback: (progress) {
    print('Progress: $progress');

stream.listen((HostModel device) {
    print("Found host: ${device.ip}");

If you don't know what is your subnet, you can use network_info_plus and then ipToCSubnet() function.

var wifiIP = await NetworkInfo().getWifiIP()

var subnet = ipToCSubnet(wifiIP);

In order to use this package in the release mode, you may need to add the android.permission.INTERNET to your AndroidManifest.xml file:

<uses-permission android:name="android.permission.INTERNET" />

Features, bugs and contributions

Feel free to contribute to this project.

Please file feature requests and bugs at the issue tracker.
If you fixed a bug or implemented a feature by yourself, feel free to send a pull request.


I am working on my packages in my free time.

If this package is helping you, please consider buying me a coffee, so I can keep updating and maintaining this package.