flutter_qora 0.3.0
flutter_qora: ^0.3.0 copied to clipboard
A Flutter wrapper around the Qora async state management library, providing seamless integration with Flutter's widget tree and lifecycle
Changelog #
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
Unreleased #
0.3.0 - 2026-02-25 #
Added #
MutationBuilder<TData, TVariables, TContext>—StatefulWidgetthat creates and manages aMutationControllerinternally; thebuilderreceives the currentMutationStateand amutate(variables)callbackmutatorparameter (mirrorsfetcherinQoraBuilder) — the async function performing the writeoptionsparameter —MutationOptionswithonMutate/onSuccess/onError/onSettledlifecycle hooksmetadataparameter — optionalMap<String, Object?>?forwarded to everyMutationEvent; attach domain context (e.g.{'category': 'auth', 'screen': 'login'}) visible in DevTools without modifying the core schema- Rebuilds on every state transition; controller is disposed automatically on widget unmount
- Recreates the controller if
mutator,options, ormetadataidentity changes across widget rebuilds - Passes
QoraScope.maybeOf(context)astrackerautomatically; safe to use without aQoraScopeancestor (standalone mode, no DevTools wiring)
0.2.0 - 2026-02-22 #
Added #
FlutterConnectivityManager— invalidates all queries when the device reconnects after being offline; powered byconnectivity_plus(bundled as a direct dependency)FlutterConnectivityManagerandFlutterLifecycleManagerexported from the mainflutter_qoralibrary barrelQoraScopenow accepts an optionalconnectivityManagerparameter alongsidelifecycleManager
Changed #
queryKeyacceptsObject— bothQoraBuilderandQoraStateBuildernow accept a plainList<dynamic>or aQoraKey; no wrapping inQoraKey(...)requiredFlutterLifecycleManager.refetchIntervalis now public (was_refetchInterval); configures the minimum background duration before queries are invalidated on app resume (default: 5 s)- Internal refetch mechanism uses
client.invalidateWhere((_) => true)instead of direct stream manipulation; activeQoraBuilderwidgets detect the resultingLoading(previousData: …)state and re-fetch automatically
0.1.0 - 2026-02-11 #
Added #
QoraScope(InheritedWidget) — providesQoraClientto the widget treeQoraBuilder<T>— fetches on mount, subscribes to all state transitions, re-fetches on invalidation, and cleans up on disposeQoraStateBuilder<T>— observe-only variant; subscribes to state without triggering a fetchBuildContextextensions:context.qora,context.qoraOrNullFlutterLifecycleManager— invalidates all queries when the app resumes after a configurable background pause