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
89
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