connectivity_state_plus 0.1.8 copy "connectivity_state_plus: ^0.1.8" to clipboard
connectivity_state_plus: ^0.1.8 copied to clipboard

Flutter connectivity plugin for WiFi, cellular, and restricted networks with real TCP reachability checks, custom ports, and cached probes.

example/lib/main.dart

import 'dart:async';
import 'dart:developer' as developer;

import 'package:connectivity_state_plus/connectivity_state_plus.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';

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

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        useMaterial3: true,
        colorSchemeSeed: const Color(0x9f4376f8),
      ),
      home: const MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({Key? key, required this.title}) : super(key: key);

  final String title;

  @override
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  ConnectivityState _connectionStatus = ConnectivityState.none;
  final Connectivity _connectivity = Connectivity();
  late StreamSubscription<ConnectivityState> _connectivitySubscription;

  @override
  void initState() {
    super.initState();
    initConnectivity();

    _connectivitySubscription =
        _connectivity.onConnectivityChanged.listen(_updateConnectionStatus);
  }

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

  // Platform messages are asynchronous, so we initialize in an async method.
  Future<void> initConnectivity() async {
    late ConnectivityState result;
    // Platform messages may fail, so we use a try/catch PlatformException.
    try {
      result = await _connectivity.checkConnectivity();
    } on PlatformException catch (e) {
      developer.log('Couldn\'t check connectivity status', error: e);
      return;
    }

    // If the widget was removed from the tree while the asynchronous platform
    // message was in flight, we want to discard the reply rather than calling
    // setState to update our non-existent appearance.
    if (!mounted) {
      return Future.value(null);
    }

    return _updateConnectionStatus(result);
  }

  Future<void> _updateConnectionStatus(ConnectivityState result) async {
    setState(() {
      _connectionStatus = result;
    });
    // ignore: avoid_print
    print('Connectivity changed: $_connectionStatus');
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('Connectivity Plus Example'),
        elevation: 4,
      ),
      body: Column(
        mainAxisSize: MainAxisSize.min,
        children: [
          const Spacer(flex: 2),
          Text(
            'Active connection state:',
            style: Theme.of(context).textTheme.headlineMedium,
          ),
          const Spacer(),
          Center(
            child: Text(
              _connectionStatus.toString(),
              style: Theme.of(context).textTheme.headlineSmall,
            ),
          ),
          const Spacer(flex: 2),
        ],
      ),
    );
  }
}
1
likes
140
points
242
downloads

Documentation

API reference

Publisher

unverified uploader

Weekly Downloads

Flutter connectivity plugin for WiFi, cellular, and restricted networks with real TCP reachability checks, custom ports, and cached probes.

Repository (GitHub)
View/report issues

Topics

#connectivity #connection-checker #internet-connection #offline

License

MIT (license)

Dependencies

collection, connectivity_plus_platform_interface, flutter, flutter_web_plugins, meta, nm, web

More

Packages that depend on connectivity_state_plus

Packages that implement connectivity_state_plus