gt_network 1.0.0 copy "gt_network: ^1.0.0" to clipboard
gt_network: ^1.0.0 copied to clipboard

A production-ready Flutter network connectivity manager with automatic retry, lifecycle management, quality detection, and customizable no-internet overlays.

example/lib/main.dart

import 'package:flutter/material.dart';
import 'package:gt_network/gt_network.dart';

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

  // Initialize connectivity manager
  await ConnectivityManager.instance.initialize();

  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'GT Network Example',
      navigatorKey: NavigationService.navigatorKey,
      theme: ThemeData(
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.blue),
        useMaterial3: true,
      ),
      home: ConnectivityListener(
        showNoInternetOverlay: true,
        child: const NetworkExampleScreen(),
      ),
    );
  }
}

class NetworkExampleScreen extends StatelessWidget {
  const NetworkExampleScreen({super.key});

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('GT Network Example'),
        backgroundColor: Theme.of(context).colorScheme.inversePrimary,
        actions: [
          // Live connectivity indicator
          StreamBuilder<ConnectivityInfo>(
            stream: ConnectivityManager.instance.stream,
            initialData: ConnectivityManager.instance.current,
            builder: (context, snapshot) {
              final isOnline = snapshot.data?.isOnline ?? false;
              return Padding(
                padding: const EdgeInsets.all(12.0),
                child: Icon(
                  isOnline ? Icons.wifi : Icons.wifi_off,
                  color: isOnline ? Colors.green : Colors.red,
                ),
              );
            },
          ),
        ],
      ),
      body: Padding(
        padding: const EdgeInsets.all(16),
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.stretch,
          children: [
            // Connectivity Status Card
            StreamBuilder<ConnectivityInfo>(
              stream: ConnectivityManager.instance.stream,
              initialData: ConnectivityManager.instance.current,
              builder: (context, snapshot) {
                final info = snapshot.data!;
                return Card(
                  child: Padding(
                    padding: const EdgeInsets.all(16),
                    child: Column(
                      children: [
                        Icon(
                          info.isOnline ? Icons.cloud_done : Icons.cloud_off,
                          size: 48,
                          color: info.isOnline ? Colors.green : Colors.red,
                        ),
                        const SizedBox(height: 12),
                        Text(
                          info.isOnline ? 'Online' : 'Offline',
                          style: Theme.of(context).textTheme.headlineMedium,
                        ),
                        const SizedBox(height: 8),
                        Text('Status: ${info.status.name}'),
                        Text('Quality: ${info.quality.name}'),
                        if (info.isWifi) const Text('Connection: WiFi'),
                        if (info.isMobile) const Text('Connection: Mobile'),
                        if (info.latency != null)
                          Text('Latency: ${info.latency!.inMilliseconds}ms'),
                      ],
                    ),
                  ),
                );
              },
            ),
            const SizedBox(height: 24),

            // Actions
            Text('Actions', style: Theme.of(context).textTheme.titleLarge),
            const SizedBox(height: 12),

            ElevatedButton.icon(
              onPressed: () => ConnectivityManager.instance.retry(),
              icon: const Icon(Icons.refresh),
              label: const Text('Manual Retry'),
            ),
            const SizedBox(height: 8),

            ElevatedButton.icon(
              onPressed: () {
                final isOnline = context.isOnline;
                ScaffoldMessenger.of(context).showSnackBar(
                  SnackBar(
                    content: Text(
                      isOnline ? 'You are online!' : 'You are offline!',
                    ),
                    backgroundColor: isOnline ? Colors.green : Colors.red,
                  ),
                );
              },
              icon: const Icon(Icons.check_circle),
              label: const Text('Check with Extension'),
            ),
          ],
        ),
      ),
    );
  }
}
0
likes
160
points
143
downloads

Publisher

unverified uploader

Weekly Downloads

A production-ready Flutter network connectivity manager with automatic retry, lifecycle management, quality detection, and customizable no-internet overlays.

Repository (GitHub)
View/report issues

Topics

#connectivity #network #internet #offline #utilities

Documentation

API reference

License

MIT (license)

Dependencies

connectivity_plus, flutter

More

Packages that depend on gt_network