Native Ping Checker

A Flutter plugin for checking internet connectivity using native ICMP ping.

Features

  • Native ICMP ping (no HTTP requests)
  • Windows & Android support
  • Simple Map-based configuration
  • All configuration fields are required
  • Automatic periodic checking
  • Stream-based status updates

Installation

dependencies:
  native_ping_checker: ^0.0.1

Usage

import 'package:native_ping_checker/native_ping_checker.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();

  try {
    await NativePingChecker.init(
      config: {
        'target': '8.8.8.8',
        'pingCount': 5,
        'timeoutMs': 2000,
        'minSuccessCount': 3,
        'checkIntervalSeconds': 30,
      },
      autoStartPeriodicCheck: true,
      onStatusChange: (isConnected) {
        print('Connection: ${isConnected ? "Online" : "Offline"}');
      },
    );

    runApp(MyApp());
  } on PingConfigException catch (e) {
    print(e.message);
  }
}

Configuration

All fields are required:

Field Type Description
target String IP address or domain to ping
pingCount int Number of ping attempts
timeoutMs int Timeout per ping (ms)
minSuccessCount int Minimum successful pings
checkIntervalSeconds int Interval between checks (seconds)

API

Initialize

await NativePingChecker.init(
  config: {...},
  autoStartPeriodicCheck: true,  // default: true
  onStatusChange: (isConnected) {},
);

Check Once

bool isOnline = await NativePingChecker.checkConnection();

Stream

NativePingChecker.connectionStream.listen((isConnected) {
  print('Status: $isConnected');
});

Control

NativePingChecker.startPeriodicCheck();
NativePingChecker.stopPeriodicCheck();
NativePingChecker.dispose();

Properties

bool lastStatus = NativePingChecker.lastStatus;
bool isRunning = NativePingChecker.isPeriodicCheckRunning;
bool isInit = NativePingChecker.isInitialized;
PingConfig config = NativePingChecker.config;

Platform Support

Platform Status
Windows Supported
Android Supported
iOS Planned
macOS Planned

License

MIT License