connection_checker 0.0.3 copy "connection_checker: ^0.0.3" to clipboard
connection_checker: ^0.0.3 copied to clipboard

This package allows you to check for connectivity to a URI and verify it's connectivity to that specific endpoint.

ConnectionChecker #

ConnectionChecker is a simple Flutter package that allows you to check for internet connectivity or the connectivity status of any URI provided by the user. This package provides an easy way to verify if a device is online or can access a specific endpoint, making it perfect for apps that need network status validation.

[![pub package][package_svg]][package]

![GitHub][license_svg]

Features #

  • Check internet connectivity.
  • Verify connectivity to any specific URI.
  • Lightweight and easy to integrate into Flutter projects.
  • Handles different network types (Wi-Fi, mobile data, etc.).
  • Use Sockets for fast and reliable connectivity checks.

Installation #

Add the package to your pubspec.yaml file:

dependencies:
  connectivity_checker: latest_version

Then, run the following command to get the dependencies:

flutter pub get connectivity_checker

Usage #

Android Permissions #

Android apps must declare their use of the internet in the Android manifest (AndroidManifest.xml):

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

IOS Permissions #

For iOS, following must be put in Info-debug.plist:

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>

macOS Permissions #

macOS apps must allow network access in the relevant *.entitlements files.

<key>com.apple.security.network.client</key>
<true/>

Check Internet Connectivity #

To check if the device is connected to the internet:

import 'package:connectivity_checker/connectivity_checker.dart';

void checkConnectivity() async {
  bool isConnected = await ConnectionChecker.hasConnection();
  print('Internet Connected: $isConnected');
}

Check Connectivity to a Specific URI #

To check if a specific URI is reachable:

import 'package:connectivity_checker/connectivity_checker.dart';

void checkConnectivity() async {
  String uri = 'https://example.com';
  bool isConnected = await ConnectionChecker.checkConnectivity(HttpOption(url:uri));
  print('Connected to $uri: $isConnected');
}

Listen to Connectivity Changes #

You can also subscribe to changes in the device’s connectivity status (online/offline):

import 'package:connectivity_checker/connectivity_checker.dart';

void monitorConnectivityChanges() {
  ConnectionChecker.onConnectivityChanged.listen((status) {
    if (status == ConnectivityResult.connected) {
      print('Device is online');
    } else {
      print('Device is offline');
    }
  });
}

API Reference #

1. checkConnectivity() #

  • Description: Checks if the device has an active internet connection.
  • Returns: A Future<bool> which resolves to true if connected, false otherwise.

2. checkConnectivity(String url) #

  • Description: Checks if a specific URI is reachable over the internet.
  • Parameters:
    • url (String): The URI to check.
  • Returns: A Future<bool> which resolves to true if the URI is reachable, false otherwise.

3. onConnectivityChanged #

  • Description: A stream that listens for connectivity changes.
  • Returns: A Stream<ConnectivityResult> which broadcasts changes in connectivity (e.g., connected, disconnected).

Example #

Here’s a complete example of how to use ConnectionChecker in a Flutter app:

import 'dart:async';
import 'package:flutter/material.dart';
import 'package:connectivity_checker/connectivity_checker.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatefulWidget {
  const MyApp({super.key});
  @override
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  late final AppLifecycleListener _listener;
  late final StreamSubscription<ConnectionStatus> _subscription;
  ValueNotifier<bool> res = ValueNotifier<bool>(true);

  @override
  void initState() {
    super.initState();
    var i = ConnectionChecker();

    _subscription = i.onConnectivityChanged.listen((status) {
      res.value = status == ConnectionStatus.connected;
    });

    _listener = AppLifecycleListener(
      onResume: _subscription.resume,
      onHide: _subscription.pause,
      onDetach: _subscription.cancel,
      onPause: _subscription.pause,
    );
  }

  @override
  void dispose() {
    _subscription.cancel();
    _listener.dispose();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        body: Center(
          child: ValueListenableBuilder(
            valueListenable: res,
            builder: (context, value, child) {
              return Text("$value");
            },
          ),
        ),
      ),
    );
  }
}

Contributing #

Contributions are welcome! Feel free to open a pull request or submit issues in the GitHub repository.

Current working #

making it compatible with web, having issues with web connectivity

0
likes
140
points
18
downloads

Publisher

unverified uploader

Weekly Downloads

This package allows you to check for connectivity to a URI and verify it's connectivity to that specific endpoint.

Homepage
Repository (GitHub)
View/report issues

Documentation

Documentation
API reference

License

MIT (license)

Dependencies

connectivity_plus, flutter, http

More

Packages that depend on connection_checker