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

Smart connectivity manager for Flutter apps with offline request queue, retry system, and connection listeners.

example/lib/main.dart

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

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

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

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      title: "Connectivity Manager",
      theme: ThemeData(
        colorSchemeSeed: Colors.blue,
        useMaterial3: true,
      ),
      home: const ConnectivityHome(),
    );
  }
}

class ConnectivityHome extends StatefulWidget {
  const ConnectivityHome({super.key});

  @override
  State<ConnectivityHome> createState() => _ConnectivityHomeState();
}

class _ConnectivityHomeState extends State<ConnectivityHome> {
  final ConnectivityService connectivity = ConnectivityService();
  final RequestQueue queue = RequestQueue();
  final RetryManager retryManager = RetryManager();

  String status = "Checking...";
  String apiResult = "No request yet";

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

    connectivity.onStatusChange.listen((event) {
      setState(() {
        status =
        event.status == ConnectivityStatus.online ? "Online" : "Offline";
      });
    });
  }

  Future<void> makeRequest() async {
    final online = await connectivity.isOnline();

    if (!online) {
      queue.add(() async {
        return makeRequest();
      });

      setState(() {
        apiResult = "Offline: Request queued";
      });

      return;
    }

    final result = await retryManager.retry(() async {
      await Future.delayed(const Duration(seconds: 1));
      return "API request successful!";
    });

    setState(() {
      apiResult = result;
    });
  }

  void openWebSocket() {
    final socket = WebSocketManager();

    socket.connect("wss://echo.websocket.events");

    socket.messages.listen((message) {
      setState(() {
        apiResult = "Socket message: $message";
      });
    });

    socket.send("Hello from Flutter");
  }

  Color get statusColor {
    if (status == "Online") return Colors.green;
    if (status == "Offline") return Colors.red;
    return Colors.orange;
  }

  IconData get statusIcon {
    if (status == "Online") return Icons.wifi;
    if (status == "Offline") return Icons.wifi_off;
    return Icons.wifi_find;
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text("Connectivity Manager Demo"),
        centerTitle: true,
      ),
      body: Padding(
        padding: const EdgeInsets.all(20),
        child: Column(
          children: [

            /// STATUS CARD
            Card(
              elevation: 2,
              child: ListTile(
                leading: Icon(statusIcon, color: statusColor, size: 30),
                title: const Text("Network Status"),
                subtitle: Text(
                  status,
                  style: TextStyle(
                    fontSize: 16,
                    color: statusColor,
                    fontWeight: FontWeight.bold,
                  ),
                ),
              ),
            ),

            const SizedBox(height: 20),

            /// API RESULT CARD
            Card(
              elevation: 2,
              child: Padding(
                padding: const EdgeInsets.all(16),
                child: Row(
                  crossAxisAlignment: CrossAxisAlignment.start,
                  children: [
                    const Icon(Icons.api, size: 30),
                    const SizedBox(width: 10),
                    Expanded(
                      child: Text(
                        apiResult,
                        style: const TextStyle(fontSize: 15),
                      ),
                    ),
                  ],
                ),
              ),
            ),

            const SizedBox(height: 30),

            /// BUTTONS
            SizedBox(
              width: double.infinity,
              child: ElevatedButton.icon(
                icon: const Icon(Icons.cloud_download),
                label: const Text("Make API Request"),
                onPressed: makeRequest,
              ),
            ),

            const SizedBox(height: 10),

            SizedBox(
              width: double.infinity,
              child: ElevatedButton.icon(
                icon: const Icon(Icons.wifi_tethering),
                label: const Text("Open WebSocket"),
                onPressed: openWebSocket,
              ),
            ),
          ],
        ),
      ),
    );
  }
}
0
likes
140
points
--
downloads
screenshot

Documentation

API reference

Publisher

verified publisherzeba.academy

Weekly Downloads

Smart connectivity manager for Flutter apps with offline request queue, retry system, and connection listeners.

Homepage

License

GPL-3.0 (license)

Dependencies

connectivity_plus, flutter, http, queue, web_socket_channel

More

Packages that depend on zeba_academy_connectivity_manager