connectivity_watcher 3.0.5 copy "connectivity_watcher: ^3.0.5" to clipboard
connectivity_watcher: ^3.0.5 copied to clipboard

A Flutter package for fast internet checks with subsecond response times and customizable offline UI.

connectivity_watcher #

pub package
pub points
License: MIT

A lightning-fast Flutter plugin for internet connectivity monitoring โ€” with subsecond response times, built-in retry mechanisms, and fully customizable UI for alerts and status widgets.

Custom UI SnackBar Style Alert Dialog
Custom SnackBar Alert

๐Ÿง‘โ€๐Ÿ’ป Getting Started #

1. Install the package #

dependencies:
  flutter:
    sdk: flutter
  connectivity_watcher: ^[latest_version]

2. Import it #

import 'package:connectivity_watcher/connectivity_watcher.dart';

3. Initialize it in main.dart #

WidgetsFlutterBinding.ensureInitialized();
ZoConnectivityWatcher().setUp();

๐Ÿ”Œ Basic Usage #

Wrap Your App #

Use ZoConnectivityWrapper at the root of your app to monitor connection changes:

ZoConnectivityWrapper(
  connectivityStyle: NoConnectivityStyle.SNACKBAR,
  builder: (context, connectionKey) {
    return MaterialApp(
      navigatorKey: connectionKey,
      home: LoginDemo(),
    );
  },
);

Use Prebuilt UI Styles #

Snackbar Style

connectivityStyle: NoConnectivityStyle.SNACKBAR,

Alert Dialog Style

connectivityStyle: NoConnectivityStyle.ALERT,

๐Ÿงฉ Custom Offline Widget #

Want to show your own offline UI? Use NoConnectivityStyle.CUSTOM:

ZoConnectivityWrapper(
  connectivityStyle: NoConnectivityStyle.CUSTOM,
  offlineWidget: CustomNoInternetWrapper(
    builder: (context) => CustomNoInternet(),
  ),
  builder: (context, connectionKey) => MaterialApp(
    navigatorKey: connectionKey,
    home: LoginDemo(),
  ),
);

The widget is auto-removed once the internet is back. You can also remove it manually:

bool removed = await ZoConnectivityWatcher().hideNoInternet();
if (!removed) {
  print("Still no internet");
}

๐Ÿ” API Call with Retry #

Automatically retries failed API calls after connectivity is restored:

ZoConnectivityWatcher().makeApiCallWithRetry(
  maxRetries: 2,
  delay: const Duration(seconds: 1),
  apiCall: () async {
    final dio = Dio();
    dio.interceptors.add(CurlInterceptor());

    final response = await dio.post(
      "https://jsonplaceholder.typicode.com/posts",
      data: {
        "title": 'foo',
        "body": 'bar',
        "userId": 1,
      },
    );
  },
);

๐ŸŒ Check Internet Manually #

bool hasInternet = await ZoConnectivityWatcher().isInternetAvailable;

๐Ÿง  Network-Aware Widgets #

Use ZoNetworkAwareWidget to render UI based on real-time connectivity:

ZoNetworkAwareWidget(
  builder: (context, status) {
    return Container(
      height: 50,
      width: 250,
      decoration: BoxDecoration(
        color: Colors.blue,
        borderRadius: BorderRadius.circular(20),
      ),
      child: MaterialButton(
        onPressed: () {},
        child: Text(
          status == ConnectivityWatcherStatus.connected ? 'Connected' : 'Disconnected',
          style: TextStyle(color: Colors.black, fontSize: 25),
        ),
      ),
    );
  },
);

๐Ÿงช Curl Logging for Dio #

Log API requests as curl commands:

final dio = Dio();
dio.interceptors.add(CurlInterceptor());

๐Ÿ› ๏ธ Feature Requests & Bugs #

Have an idea or found a bug? Open an issue on GitHub.


๐Ÿ“ฆ More From Me #

40
likes
150
points
113
downloads
screenshot

Publisher

verified publisherthezerone.com

Weekly Downloads

A Flutter package for fast internet checks with subsecond response times and customizable offline UI.

Repository (GitHub)
View/report issues

Documentation

API reference

License

MIT (license)

Dependencies

dio, flutter

More

Packages that depend on connectivity_watcher