Installation
Flutter
Ajouter la dépendance
flutter pub add qora_flutter
Cela ajoute qora_flutter: ^1.3.1 au pubspec.yaml. Le package apporte qora et connectivity_plus ; aucune autre entrée n'est nécessaire.
Envelopper l'application
Créez un seul QoraClient et placez-le au-dessus de l'application avec QoraScope.auto :
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:qora_flutter/qora_flutter.dart';
void main() {
final client = QoraClient(
config: QoraClientConfig(
defaultOptions: const QoraOptions(staleTime: Duration(minutes: 5)),
debugMode: kDebugMode,
),
);
runApp(QoraScope.auto(client: client, child: const MyApp()));
}
QoraScope.auto démarre aussi deux managers, ce qui vous donne ces comportements sans code supplémentaire :
- Cycle de vie : quand l'application revient au premier plan après au moins 5 secondes, les requêtes périmées affichées à l'écran se relancent.
- Connectivité : les requêtes se mettent en pause quand l'appareil est hors-ligne et se relancent à la reconnexion.
L'utiliser
Tout widget sous QoraScope peut maintenant utiliser QoraBuilder, QoraMutationBuilder, ou context.qora pour les appels impératifs. Le Démarrage rapide construit un premier écran.
Notes de configuration
staleTimeest la durée pendant laquelle une donnée récupérée est considérée comme fraîche. Par défaut elle vaut zéro : la donnée est toujours périmée et revalidée en arrière-plan quand un widget se monte. Cinq minutes est un bon point de départ pour la plupart des écrans.debugMode: kDebugModeaffiche l'activité du cache uniquement en mode debug.- Pour régler les managers (par exemple un délai d'arrière-plan plus long), passez-les vous-même avec le constructeur par défaut :
runApp(
QoraScope(
client: client,
lifecycleManager: FlutterLifecycleManager(
qoraClient: client,
minBackgroundDuration: const Duration(seconds: 30),
),
connectivityManager: FlutterConnectivityManager(),
child: const MyApp(),
),
);
QoraScope sans managers fonctionne aussi, mais rien ne se relance alors au retour au premier plan ni à la reconnexion.
Hooks
Si votre application utilise flutter_hooks, ajoutez aussi qora_hooks :
flutter pub add qora_hooks flutter_hooks
La configuration reste le même QoraScope.auto. Voir Hooks.
Dart pur
Pour les CLI, les serveurs et les packages partagés, utilisez le package principal. Il n'a aucune dépendance Flutter :
dart pub add qora
import 'package:qora/qora.dart';
Future<void> main() async {
final client = QoraClient(
config: const QoraClientConfig(
defaultOptions: QoraOptions(staleTime: Duration(minutes: 5)),
),
);
// Fetch ponctuel : mis en cache, dédupliqué, relancé en cas d'échec.
final user = await client.fetchQuery<User>(
key: ['users', 1],
fetcher: () => api.getUser(1),
);
print('User: ${user.name}');
// Toujours frais : servi depuis le cache, sans appel réseau.
await client.fetchQuery<User>(key: ['users', 1], fetcher: () => api.getUser(1));
client.dispose();
}
watchQuery renvoie un stream de chaque transition d'état quand vous avez besoin de réactivité hors de Flutter. Voir Requêtes.
Overlay DevTools (optionnel)
flutter pub add qora_devtools_overlay
Voir Overlay intégré pour la configuration. C'est une dépendance normale, car votre main.dart l'importe ; en build release il n'affiche rien et son UI est retirée par le tree shaking.
Étapes suivantes
- Démarrage rapide : construire un écran liste et un écran détail, puis passer hors-ligne
- QoraScope : toutes les options du scope
- Persistance : conserver le cache entre deux lancements
Qu'est-ce que Qora ?
Qora récupère, met en cache et synchronise les données serveur dans Flutter et Dart, et garde votre application utilisable quand le réseau ne l'est pas.
Démarrage rapide
Construire un écran liste et un écran détail avec Qora, voir le cache travailler, puis passer l'application hors-ligne.