Pakete, Repositories und App-Kategorien suchen

Cover von flutter_offline
Paketdetailsv6.0.0

flutter_offline

Eine ordentliche Utility, um Offline/Online-Konnektivität wie ein Boss zu handhaben.

AndroidiOSWebmacOSWindowsLinux
30-Tage-Downloads
5500
Likes
680
Pub-Punkte
140

Paket installieren

flutter pub add flutter_offline

Paketübersicht

Aus öffentlichen Paketdaten erstellte Orientierung.

flutter_offline ist ein leichtgewichtiges und intuitives Paket, das die Überwachung des Netzwerkverbindungsstatus in Flutter-Anwendungen vereinfacht. Es bietet eine Echtzeit-Erkennung von Online- und Offline-Zuständen und ermöglicht Entwicklern, responsive Benutzeroberflächen zu erstellen, die sich nahtlos an wechselnde Netzwerkbedingungen anpassen. Durch minimalen Aufwand und konsistentes Verhalten über Plattformen hinweg gewährleistet es zuverlässige Verbindungsprüfungen unter Android, iOS, Web, macOS, Windows und Linux. Das Paket lässt sich nahtlos in bestehende Apps integrieren und bietet eine saubere API zur effizienten Handhabung von Änderungen im Netzwerkstatus.

Anwendungsfälle

  • Verwaltung der Offline-Daten-Caching
  • Netzwerkstatusanzeigen anzeigen
  • Offline-first-Anwendungserfahrungen aktivieren
  • API-Anfragen während Verbindungsverlust geschmeidig verwalten
  • Resiliente Benutzeroberflächen aufbauen

Hauptmerkmale

  • Echtzeit-Erkennung des Online-/Offline-Zustands
  • Plattformübergreifende Kompatibilität
  • Einfaches und sauberes API
  • Automatische Verbindungsüberwachung
  • Unterstützung für mobile und Desktop-Plattformen

Geeignet für

  • Apps, die eine starke Netzwerkbewusstheit erfordern
  • Entwicklung von Anwendungen mit Fokus auf Offline-Nutzung
  • Benutzerbezogenes Connectivity-Feedback
  • netzabhängige Geschäftslogik
  • Entwickler, die geringen Integrationsaufwand suchen

Hinweise

  • Behandelt automatisch Wiederherstellungsversuche nicht
  • Benötigt manuelle Implementierung für Wiederholungsstrategien
  • Beschränkt auf Verbindungsstatus, nicht auf Daten-Synchronisation
  • Keine integrierte Persistenz für Offline-Daten
  • Hängt von systemnahen Netzwerk-APIs ab, die je nach Plattform variieren können

Original-README

Originaler README-Schnappschuss aus dem verknüpften Quell-Repository. Aktuelle Inhalte finden Sie im Repository.

✈️ Flutter Offline

Format, Analyze and Test codecov pub package

A tidy utility to handle offline/online connectivity like a Boss. It provides support for all platforms (iOS, Android, Web, macOS, Linux, and Windows).

🎖 Installing

dependencies:
  flutter_offline: "^6.0.0"
⚡️ Import
import 'package:flutter_offline/flutter_offline.dart';
✔ Add Permission to Manifest
<uses-permission android:name="android.permission.INTERNET"/>

🎮 How To Use

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

class DemoPage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return new Scaffold(
      appBar: new AppBar(
        title: new Text("Offline Demo"),
      ),
      body: OfflineBuilder(
        connectivityBuilder: (
          BuildContext context,
          List<ConnectivityResult> connectivity,
          Widget child,
        ) {
          final bool connected = !connectivity.contains(ConnectivityResult.none);
          return new Stack(
            fit: StackFit.expand,
            children: [
              Positioned(
                height: 24.0,
                left: 0.0,
                right: 0.0,
                child: Container(
                  color: connected ? Color(0xFF00EE44) : Color(0xFFEE4400),
                  child: Center(
                    child: Text("${connected ? 'ONLINE' : 'OFFLINE'}"),
                  ),
                ),
              ),
              Center(
                child: new Text(
                  'Yay!',
                ),
              ),
            ],
          );
        },
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            new Text(
              'There are no bottons to push :)',
            ),
            new Text(
              'Just turn off your internet.',
            ),
          ],
        ),
      ),
    );
  }
}

For more info, please, refer to the main.dart in the example.

🔄 Retry Functionality

Manually retry connectivity checks with exponential backoff:

class MyWidget extends StatefulWidget {
  @override
  State<MyWidget> createState() => _MyWidgetState();
}

class _MyWidgetState extends State<MyWidget> {
  late final OfflineRetryController _retryController;

  @override
  void initState() {
    super.initState();
    _retryController = OfflineRetryController(
      maxRetries: 5,
      retryCooldown: const Duration(seconds: 2),
    );
    _retryController.addListener(() => setState(() {}));
  }

  @override
  void dispose() {
    _retryController.dispose();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return OfflineBuilder(
      retryController: _retryController,
      connectivityBuilder: (context, connectivity, child) {
        final connected = !connectivity.contains(ConnectivityResult.none);
        return Column(
          children: [
            Text(connected ? 'ONLINE' : 'OFFLINE'),
            if (!connected)
              ElevatedButton(
                onPressed: _retryController.canRetry ? _retryController.retry : null,
                child: Text('Retry (${_retryController.retryCount}/5)'),
              ),
          ],
        );
      },
    );
  }
}
Custom Retry Logic

Override onRetry() or onRetryError() for custom behavior:

class CustomRetryController extends OfflineRetryController {
  CustomRetryController() : super(maxRetries: 3);

  @override
  Future<void> onRetry() async {
    print('Retrying connection...');
  }

  @override
  void onRetryError(Object error, StackTrace stackTrace) {
    print('Retry failed: $error');
  }
}

Features:

  • Exponential backoff (1s, 2s, 4s, 8s, 16s)
  • Configurable retry limits and cooldown
  • Auto-reset on reconnection
  • Extends ChangeNotifier for reactive UI updates

🧪 Testing

Run tests with:

flutter test

📷 Screenshots

🐛 Bugs/Requests

If you encounter any problems feel free to open an issue. If you feel the library is missing a feature, please raise a ticket on Github and I'll look into it. Pull request are also welcome.

❗️ Note

For help getting started with Flutter, view our online documentation.

For help on editing plugin code, view the documentation.

🤓 Mentions

Simon Lightfoot (@slightfoot) is just awesome 👍.

⭐️ License

MIT License

Kategorien

Abhängigkeiten

Abhängigkeiten 2 Einträge

Quell-Repository

Projekte, die dieses Paket verwenden

Noch keine Daten verfügbar.