Configuration
Installation
Ajouter qora_flutter à pubspec.yaml :
dependencies:
qora_flutter: ^ 1.3.1
Puis récupérer les dépendances :
flutter pub get
qora_flutter inclut automatiquement qora et connectivity_plus comme dépendances. Ces packages n'ont pas besoin d'être ajoutés séparément.Créer le client
QoraClient est le cache central et l'orchestrateur de requêtes. Créer une seule instance par application (ou par scope DI) :
import 'package:flutter/foundation.dart';
import 'package:qora_flutter/qora_flutter.dart';
final client = QoraClient(
config: QoraClientConfig(
defaultOptions: QoraOptions(
staleTime: Duration(minutes: 5),
gcTime: Duration(minutes: 10),
retryCount: 3,
),
debugMode: kDebugMode,
),
);
debugMode: kDebugMode pour obtenir des logs détaillés en développement sans coût de performance en production.Encapsuler l'application avec QoraScope
QoraScope est un StatefulWidget qui expose le client à tous les descendants via un InheritedWidget interne. Le placer aussi près de la racine que possible :
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:qora_flutter/qora_flutter.dart';
void main() {
final client = QoraClient(
config: const QoraClientConfig(debugMode: kDebugMode),
);
runApp(
QoraScope(
client: client,
child: const MyApp(),
),
);
}
Tout widget descendant peut désormais accéder au client via context.qora ou QoraScope.of(context).
Optionnel : gestionnaires de cycle de vie et de connectivité
Pour le refetch automatique à la reprise de l'application et à la reconnexion réseau, passer les gestionnaires intégrés à QoraScope :
void main() {
final client = QoraClient();
runApp(
QoraScope(
client: client,
lifecycleManager: FlutterLifecycleManager(
qoraClient: client,
// Invalider toutes les requêtes si l'app était en arrière-plan depuis plus de 30 s
minBackgroundDuration: const Duration(seconds: 30),
),
connectivityManager: FlutterConnectivityManager(),
child: const MyApp(),
),
);
}
| Gestionnaire | Comportement |
|---|---|
FlutterLifecycleManager | Invalide toutes les requêtes quand l'application reprend après une pause supérieure à minBackgroundDuration. |
FlutterConnectivityManager | Émet des événements NetworkStatus ; la logique de reconnexion est déléguée à QoraClient via reconnectStrategy. |
QoraScope appelle automatiquement start() et dispose() sur les deux gestionnaires : aucun câblage manuel du cycle de vie n'est requis.
Raccourci : QoraScope.auto()
Pour plus de commodité, utilisez QoraScope.auto() pour câbler les deux gestionnaires en un seul appel :
void main() {
runApp(
QoraScope.auto(
client: QoraClient(),
child: const MyApp(),
),
);
}
C'est équivalent à passer manuellement FlutterLifecycleManager et FlutterConnectivityManager. Utilisez enableLifecycle et enableConnectivity pour désactiver des listeners spécifiques :
QoraScope.auto(
client: QoraClient(),
enableLifecycle: false, // désactiver le refetch à la reprise
enableConnectivity: false, // désactiver le refetch à la reconnexion
minBackgroundDuration: const Duration(seconds: 30),
child: const MyApp(),
)
| Paramètre | Type | Défaut | Description |
|---|---|---|---|
enableLifecycle | bool | true | Active FlutterLifecycleManager (refetch à la reprise). |
enableConnectivity | bool | true | Active FlutterConnectivityManager (refetch à la reconnexion). |
minBackgroundDuration | Duration | Duration(seconds: 5) | Pause minimale avant invalidation à la reprise. |
Étapes suivantes
- QoraScope : API détaillée et patterns de scopes imbriqués
- QoraBuilder : Récupération de données et rendu des états dans les widgets
Hors-ligne et réseau
Ce que Qora fait des lectures et des écritures quand l'appareil est hors-ligne, ce qui se passe à la reconnexion, et ce qui survit à un redémarrage.
QoraScope
Le StatefulWidget qui fournit un QoraClient à l'arbre de widgets et gère le cycle de vie des gestionnaires de plateforme optionnels.