Usage avec Flutter

Configuration

Installer qora_flutter, créer une instance QoraClient et la fournir à l'arbre de widgets avec QoraScope.

Installation

Ajouter qora_flutter à pubspec.yaml :

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) :

main.dart
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,
  ),
);
Définir 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 :

main.dart
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 :

main.dart
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(),
    ),
  );
}
GestionnaireComportement
FlutterLifecycleManagerInvalide 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 :

main.dart
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 :

main.dart
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ètreTypeDéfautDescription
enableLifecyclebooltrueActive FlutterLifecycleManager (refetch à la reprise).
enableConnectivitybooltrueActive FlutterConnectivityManager (refetch à la reconnexion).
minBackgroundDurationDurationDuration(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
Copyright © 2026