v1.3.1 est disponible
Le state serveur pour les apps Flutter qui fonctionnent hors-ligne
Qora récupère, met en cache et synchronise les données serveur, et garde votre application utilisable quand le réseau ne l'est pas. Les données sauvegardées s'affichent dès le démarrage, les requêtes se mettent en pause hors-ligne et reprennent à la reconnexion, et les écritures faites hors-ligne sont mises en file puis rejouées dans l'ordre.
user_screen.dart
// Données du cache dès la première frame, conservées pendant refetchs et erreurs.
QoraBuilder<User>(
queryKey: ['users', userId],
fetcher: () => api.getUser(userId),
builder: (context, state, fetchStatus) => Column(children: [
if (fetchStatus == FetchStatus.paused) const OfflineBanner(),
if (state.dataOrNull case final user?) UserCard(user),
]),
)
// Écrit hors-ligne : affiché tout de suite, envoyé à la reconnexion.
QoraMutationBuilder<Comment, String, void>(
mutator: (text) => api.postComment(text),
options: MutationOptions(
offlineQueue: true,
optimisticResponse: (text) => Comment.draft(text),
invalidates: [['comments']],
),
builder: (context, state, mutate) => SendButton(onSend: mutate),
)
Le hors-ligne, intégré
Pas un simple flag de refetch à la reconnexion : trois briques qui travaillent ensemble, branchées par un seul widget.
Tout ce qu'on attend d'une bibliothèque de requêtes
Stale-while-revalidate
Les données du cache s'affichent dès la première frame ; les données fraîches les remplacent en arrière-plan.
Déduplication des requêtes
Dix widgets qui observent la même clé partagent une entrée de cache et un seul appel réseau.
Invalidation précise
Par clé exacte, par préfixe, par prédicat ou par tag. Les requêtes montées se relancent automatiquement.
Mises à jour optimistes
Mettez à jour le cache dans
onMutate, restaurez le snapshot dans onError, invalidez en cas de succès.État sur deux axes
Un
QoraState scellé à matcher de façon exhaustive, plus un FetchStatus séparé. Les données précédentes ne sont jamais perdues lors d'un refetch ou d'une erreur.Requêtes infinies
Pagination par curseur ou par page avec une fenêtre mémoire
maxPages.Builders ou hooks
Les widgets
QoraBuilder, ou useQuery et useMutation avec qora_hooks.DevTools dans l'app
Un overlay actif en debug uniquement qui affiche chaque requête, son état, sa fraîcheur et la file de mutations.
Noyau Dart pur
Aucune dépendance Flutter et aucune génération de code. Fonctionne dans les CLI, les serveurs et les tests.
Compatible avec ce que vous utilisez déjà
Qora gère les données serveur. Gardez votre state management pour l'état de l'UI et votre client HTTP pour le transport.
Votre première requête en cinq minutes
Ajoutez un package, enveloppez votre app avec QoraScope.auto et liez une requête à un widget. Pas de génération de code, pas d'échafaudage de providers.