[{"data":1,"prerenderedAt":1375},["ShallowReactive",2],{"navigation_docs_en":3,"-en-flutter-integration-setup":342,"-en-flutter-integration-setup-surround":1370},[4,45,91,137,195,236,257,291,327],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":44},"Getting Started","i-lucide-rocket","/en/getting-started","en/01.getting-started",[10,15,20,24,29,34,39],{"title":11,"path":12,"stem":13,"icon":14},"What is Qora?","/en/getting-started/what-is-qora","en/01.getting-started/2.what-is-qora","i-lucide-info",{"title":16,"path":17,"stem":18,"icon":19},"Installation","/en/getting-started/installation","en/01.getting-started/3.installation","i-lucide-download",{"title":21,"path":22,"stem":23,"icon":6},"Quick Start","/en/getting-started/quick-start","en/01.getting-started/4.quick-start",{"title":25,"path":26,"stem":27,"icon":28},"Comparison","/en/getting-started/comparison","en/01.getting-started/5.comparison","i-lucide-scale",{"title":30,"path":31,"stem":32,"icon":33},"Coming from TanStack Query","/en/getting-started/coming-from-tanstack-query","en/01.getting-started/6.coming-from-tanstack-query","i-lucide-arrow-left-right",{"title":35,"path":36,"stem":37,"icon":38},"Migrating from Other Libraries","/en/getting-started/migrating-from-other-libraries","en/01.getting-started/7.migrating-from-other-libraries","i-lucide-arrow-right-left",{"title":40,"path":41,"stem":42,"icon":43},"AI Assistants","/en/getting-started/ai-assistants","en/01.getting-started/8.ai-assistants","i-lucide-sparkles",false,{"title":46,"icon":47,"path":48,"stem":49,"children":50,"page":44},"Core Concepts","i-lucide-book-open","/en/core-concepts","en/02.core-concepts",[51,56,61,66,71,76,81,86],{"title":52,"path":53,"stem":54,"icon":55},"Queries","/en/core-concepts/queries","en/02.core-concepts/1.queries","i-lucide-database",{"title":57,"path":58,"stem":59,"icon":60},"Query Keys","/en/core-concepts/query-keys","en/02.core-concepts/2.query-keys","i-lucide-key-round",{"title":62,"path":63,"stem":64,"icon":65},"Query States","/en/core-concepts/query-states","en/02.core-concepts/3.query-states","i-lucide-activity",{"title":67,"path":68,"stem":69,"icon":70},"Caching","/en/core-concepts/caching","en/02.core-concepts/4.caching","i-lucide-layers-3",{"title":72,"path":73,"stem":74,"icon":75},"Stale-While-Revalidate","/en/core-concepts/stale-while-revalidate","en/02.core-concepts/5.stale-while-revalidate","i-lucide-timer-reset",{"title":77,"path":78,"stem":79,"icon":80},"Deduplication","/en/core-concepts/deduplication","en/02.core-concepts/6.deduplication","i-lucide-copy-minus",{"title":82,"path":83,"stem":84,"icon":85},"Mutations & Invalidation","/en/core-concepts/mutations","en/02.core-concepts/7.mutations","i-lucide-pencil-line",{"title":87,"path":88,"stem":89,"icon":90},"Offline & Network","/en/core-concepts/offline","en/02.core-concepts/8.offline","i-lucide-wifi-off",{"title":92,"icon":93,"path":94,"stem":95,"children":96,"page":44},"Flutter Integration","i-lucide-smartphone","/en/flutter-integration","en/03.flutter-integration",[97,102,107,112,117,122,127,132],{"title":98,"path":99,"stem":100,"icon":101},"Setup","/en/flutter-integration/setup","en/03.flutter-integration/1.setup","i-lucide-wrench",{"title":103,"path":104,"stem":105,"icon":106},"QoraScope","/en/flutter-integration/qora-scope","en/03.flutter-integration/2.qora-scope","i-lucide-share-2",{"title":108,"path":109,"stem":110,"icon":111},"QoraBuilder","/en/flutter-integration/qora-builder","en/03.flutter-integration/3.qora-builder","i-lucide-blocks",{"title":113,"path":114,"stem":115,"icon":116},"QoraMutationBuilder","/en/flutter-integration/qora-mutation-builder","en/03.flutter-integration/4.qora-mutation-builder","i-lucide-pencil",{"title":118,"path":119,"stem":120,"icon":121},"InfiniteQueryBuilder","/en/flutter-integration/infinite-query-builder","en/03.flutter-integration/5.infinite-query-builder","i-lucide-infinity",{"title":123,"path":124,"stem":125,"icon":126},"Hooks (flutter_hooks)","/en/flutter-integration/hooks","en/03.flutter-integration/6.hooks","i-lucide-anchor",{"title":128,"path":129,"stem":130,"icon":131},"Network Status Widgets","/en/flutter-integration/network-status","en/03.flutter-integration/7.network-status","i-lucide-wifi",{"title":133,"path":134,"stem":135,"icon":136},"Best Practices","/en/flutter-integration/best-practices","en/03.flutter-integration/8.best-practices","i-lucide-badge-check",{"title":138,"icon":139,"path":140,"stem":141,"children":142,"page":44},"Recipes","i-lucide-chef-hat","/en/recipes","en/04.recipes",[143,147,152,157,162,166,171,176,181,186,191],{"title":144,"path":145,"stem":146,"icon":85},"Mutations","/en/recipes/mutations","en/04.recipes/02.mutations",{"title":148,"path":149,"stem":150,"icon":151},"Optimistic Updates","/en/recipes/optimistic-updates","en/04.recipes/03.optimistic-updates","i-lucide-zap",{"title":153,"path":154,"stem":155,"icon":156},"Persistence","/en/recipes/persistence","en/04.recipes/04.persistence","i-lucide-hard-drive",{"title":158,"path":159,"stem":160,"icon":161},"Network Aware","/en/recipes/network-aware","en/04.recipes/05.network-aware","i-lucide-signal",{"title":163,"path":164,"stem":165,"icon":121},"Infinite Queries","/en/recipes/infinite-queries","en/04.recipes/06.infinite-queries",{"title":167,"path":168,"stem":169,"icon":170},"Dependent Queries","/en/recipes/dependent-queries","en/04.recipes/07.dependent-queries","i-lucide-link-2",{"title":172,"path":173,"stem":174,"icon":175},"Cancellation","/en/recipes/cancel-token","en/04.recipes/08.cancel-token","i-lucide-circle-slash",{"title":177,"path":178,"stem":179,"icon":180},"SSR Hydration","/en/recipes/ssr-hydration","en/04.recipes/09.ssr-hydration","i-lucide-server",{"title":182,"path":183,"stem":184,"icon":185},"Error Handling","/en/recipes/error-handling","en/04.recipes/10.error-handling","i-lucide-shield-alert",{"title":187,"path":188,"stem":189,"icon":190},"Testing","/en/recipes/testing","en/04.recipes/11.testing","i-lucide-flask-conical",{"title":192,"path":193,"stem":194},"Route-Level Prefetching","/en/recipes/prefetch","en/04.recipes/12.prefetch",{"title":196,"icon":197,"path":198,"stem":199,"children":200,"page":44},"API Reference","i-lucide-file-code","/en/api-reference","en/05.api-reference",[201,206,210,214,219,224,228,232],{"title":202,"path":203,"stem":204,"icon":205},"QoraClient","/en/api-reference/qora-client","en/05.api-reference/1.qora-client","i-lucide-cpu",{"title":207,"path":208,"stem":209,"icon":60},"QoraKey","/en/api-reference/qora-key","en/05.api-reference/2.qora-key",{"title":211,"path":212,"stem":213,"icon":65},"QoraState","/en/api-reference/qora-state","en/05.api-reference/3.qora-state",{"title":215,"path":216,"stem":217,"icon":218},"QoraOptions","/en/api-reference/qora-options","en/05.api-reference/4.qora-options","i-lucide-sliders-horizontal",{"title":220,"path":221,"stem":222,"icon":223},"QoraClientConfig","/en/api-reference/qora-client-config","en/05.api-reference/5.qora-client-config","i-lucide-settings-2",{"title":225,"path":226,"stem":227,"icon":85},"Mutation API","/en/api-reference/qora-mutation","en/05.api-reference/6.qora-mutation",{"title":229,"path":230,"stem":231,"icon":156},"PersistQoraClient","/en/api-reference/persist-qora-client","en/05.api-reference/7.persist-qora-client",{"title":233,"path":234,"stem":235,"icon":121},"Infinite Query","/en/api-reference/infinite-query","en/05.api-reference/8.infinite-query",{"title":237,"icon":238,"path":239,"stem":240,"children":241,"page":44},"DevTools","i-lucide-bug","/en/devtools","en/06.devtools",[242,247,252],{"title":243,"path":244,"stem":245,"icon":246},"Overview","/en/devtools/overview","en/06.devtools/1.overview","i-lucide-layout-dashboard",{"title":248,"path":249,"stem":250,"icon":251},"In-App Overlay","/en/devtools/overlay","en/06.devtools/2.overlay","i-lucide-layers",{"title":253,"path":254,"stem":255,"icon":256},"Data Serialization","/en/devtools/data-display","en/06.devtools/4.data-display","i-lucide-eye",{"title":258,"icon":259,"path":260,"stem":261,"children":262,"page":44},"Third Party","i-lucide-puzzle","/en/third-party","en/07.third-party",[263,268,272,277,282,286],{"title":264,"path":265,"stem":266,"icon":267},"With Provider","/en/third-party/with-provider","en/07.third-party/1.with-provider","i-lucide-plug",{"title":269,"path":270,"stem":271,"icon":111},"With BLoC","/en/third-party/with-bloc","en/07.third-party/2.with-bloc",{"title":273,"path":274,"stem":275,"icon":276},"With Riverpod","/en/third-party/with-riverpod","en/07.third-party/3.with-riverpod","i-lucide-droplets",{"title":278,"path":279,"stem":280,"icon":281},"With RxDart","/en/third-party/with-rxdart","en/07.third-party/4.with-rxdart","i-lucide-git-branch",{"title":283,"path":284,"stem":285},"With Dio","/en/third-party/with-dio","en/07.third-party/5.with-dio",{"title":287,"path":288,"stem":289,"icon":290},"With GraphQL","/en/third-party/with-graphql","en/07.third-party/6.with-graphql","i-lucide-binary",{"title":292,"icon":190,"path":293,"stem":294,"children":295,"page":44},"Examples","/en/examples","en/08.examples",[296,301,305,310,314,318,322],{"title":297,"path":298,"stem":299,"icon":300},"Case Study: User List & Detail","/en/examples/basic-query","en/08.examples/1.basic-query","i-lucide-play-circle",{"title":302,"path":303,"stem":304,"icon":151},"Case Study: Optimistic Mutations & Rollback","/en/examples/mutations-optimistic","en/08.examples/2.mutations-optimistic",{"title":306,"path":307,"stem":308,"icon":309},"Case Study: Infinite Scroll Feed","/en/examples/infinite-scroll","en/08.examples/3.infinite-scroll","i-lucide-scroll",{"title":311,"path":312,"stem":313,"icon":90},"Case Study: Offline-First Todo App","/en/examples/offline-first","en/08.examples/4.offline-first",{"title":315,"path":316,"stem":317,"icon":161},"Case Study: Network Awareness","/en/examples/network-awareness","en/08.examples/5.network-awareness",{"title":319,"path":320,"stem":321,"icon":126},"Case Study: Hooks Integration","/en/examples/hooks-integration","en/08.examples/6.hooks-integration",{"title":323,"path":324,"stem":325,"icon":326},"Case Study: Complete Todo App","/en/examples/complete-todo-app","en/08.examples/7.complete-todo-app","i-lucide-check-square",{"title":328,"icon":329,"path":330,"stem":331,"children":332,"page":44},"Help","i-lucide-life-buoy","/en/help","en/09.help",[333,338],{"title":334,"path":335,"stem":336,"icon":337},"FAQ","/en/help/faq","en/09.help/1.faq","i-lucide-circle-help",{"title":339,"path":340,"stem":341,"icon":101},"Troubleshooting","/en/help/troubleshooting","en/09.help/2.troubleshooting",{"id":343,"title":98,"body":344,"description":1363,"extension":1364,"links":1365,"meta":1366,"navigation":1367,"path":99,"seo":1368,"stem":100,"__hash__":1369},"docs_en/en/03.flutter-integration/1.setup.md",{"type":345,"value":346,"toc":1353},"minimark",[347,351,364,398,401,420,434,437,441,451,628,635,637,641,654,808,819,821,825,830,986,1039,1051,1059,1065,1137,1152,1246,1326,1328,1332,1349],[348,349,16],"h2",{"id":350},"installation",[352,353,354,355,359,360,363],"p",{},"Add ",[356,357,358],"code",{},"qora_flutter"," to your ",[356,361,362],{},"pubspec.yaml",":",[365,366,371],"pre",{"className":367,"code":368,"filename":362,"language":369,"meta":370,"style":370},"language-yaml shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","dependencies:\n  qora_flutter: ^ 1.3.1\n","yaml","",[356,372,373,386],{"__ignoreMap":370},[374,375,378,382],"span",{"class":376,"line":377},"line",1,[374,379,381],{"class":380},"swJcz","dependencies",[374,383,385],{"class":384},"sMK4o",":\n",[374,387,389,392,394],{"class":376,"line":388},2,[374,390,391],{"class":380},"  qora_flutter",[374,393,363],{"class":384},[374,395,397],{"class":396},"sfazB"," ^ 1.3.1\n",[352,399,400],{},"Then fetch:",[365,402,406],{"className":403,"code":404,"language":405,"meta":370,"style":370},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","flutter pub get\n","bash",[356,407,408],{"__ignoreMap":370},[374,409,410,414,417],{"class":376,"line":377},[374,411,413],{"class":412},"sBMFI","flutter",[374,415,416],{"class":396}," pub",[374,418,419],{"class":396}," get\n",[421,422,423,425,426,429,430,433],"tip",{},[356,424,358],{}," automatically includes ",[356,427,428],{},"qora"," and ",[356,431,432],{},"connectivity_plus"," as dependencies. You do not need to add them separately.",[435,436],"hr",{},[348,438,440],{"id":439},"create-the-client","Create the Client",[352,442,443,445,446,450],{},[356,444,202],{}," is the central cache and request orchestrator. Create ",[447,448,449],"strong",{},"one instance per app"," (or per DI scope):",[365,452,457],{"className":453,"code":454,"filename":455,"language":456,"meta":370,"style":370},"language-dart shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import 'package:flutter/foundation.dart';\nimport 'package:qora_flutter/qora_flutter.dart';\n\nfinal client = QoraClient(\n  config: QoraClientConfig(\n    defaultOptions: QoraOptions(\n      staleTime: Duration(minutes: 5),\n      gcTime: Duration(minutes: 10),\n      retryCount: 3,\n    ),\n    debugMode: kDebugMode,\n  ),\n);\n","main.dart","dart",[356,458,459,471,480,487,507,520,533,558,579,592,600,613,621],{"__ignoreMap":370},[374,460,461,465,468],{"class":376,"line":377},[374,462,464],{"class":463},"sbssI","import",[374,466,467],{"class":396}," 'package:flutter/foundation.dart'",[374,469,470],{"class":384},";\n",[374,472,473,475,478],{"class":376,"line":388},[374,474,464],{"class":463},[374,476,477],{"class":396}," 'package:qora_flutter/qora_flutter.dart'",[374,479,470],{"class":384},[374,481,483],{"class":376,"line":482},3,[374,484,486],{"emptyLinePlaceholder":485},true,"\n",[374,488,490,494,498,501,504],{"class":376,"line":489},4,[374,491,493],{"class":492},"spNyl","final",[374,495,497],{"class":496},"sTEyZ"," client ",[374,499,500],{"class":384},"=",[374,502,503],{"class":412}," QoraClient",[374,505,506],{"class":496},"(\n",[374,508,510,513,515,518],{"class":376,"line":509},5,[374,511,512],{"class":496},"  config",[374,514,363],{"class":384},[374,516,517],{"class":412}," QoraClientConfig",[374,519,506],{"class":496},[374,521,523,526,528,531],{"class":376,"line":522},6,[374,524,525],{"class":496},"    defaultOptions",[374,527,363],{"class":384},[374,529,530],{"class":412}," QoraOptions",[374,532,506],{"class":496},[374,534,536,539,541,544,547,549,552,555],{"class":376,"line":535},7,[374,537,538],{"class":496},"      staleTime",[374,540,363],{"class":384},[374,542,543],{"class":412}," Duration",[374,545,546],{"class":496},"(minutes",[374,548,363],{"class":384},[374,550,551],{"class":463}," 5",[374,553,554],{"class":496},")",[374,556,557],{"class":384},",\n",[374,559,561,564,566,568,570,572,575,577],{"class":376,"line":560},8,[374,562,563],{"class":496},"      gcTime",[374,565,363],{"class":384},[374,567,543],{"class":412},[374,569,546],{"class":496},[374,571,363],{"class":384},[374,573,574],{"class":463}," 10",[374,576,554],{"class":496},[374,578,557],{"class":384},[374,580,582,585,587,590],{"class":376,"line":581},9,[374,583,584],{"class":496},"      retryCount",[374,586,363],{"class":384},[374,588,589],{"class":463}," 3",[374,591,557],{"class":384},[374,593,595,598],{"class":376,"line":594},10,[374,596,597],{"class":496},"    )",[374,599,557],{"class":384},[374,601,603,606,608,611],{"class":376,"line":602},11,[374,604,605],{"class":496},"    debugMode",[374,607,363],{"class":384},[374,609,610],{"class":496}," kDebugMode",[374,612,557],{"class":384},[374,614,616,619],{"class":376,"line":615},12,[374,617,618],{"class":496},"  )",[374,620,557],{"class":384},[374,622,624,626],{"class":376,"line":623},13,[374,625,554],{"class":496},[374,627,470],{"class":384},[421,629,630,631,634],{},"Set ",[356,632,633],{},"debugMode: kDebugMode"," to get detailed logs in development without any performance cost in production.",[435,636],{},[348,638,640],{"id":639},"wrap-your-app-with-qorascope","Wrap Your App with QoraScope",[352,642,643,645,646,649,650,653],{},[356,644,103],{}," is a ",[356,647,648],{},"StatefulWidget"," that exposes the client to every descendant via an internal ",[356,651,652],{},"InheritedWidget",". Place it as close to the root as possible:",[365,655,657],{"className":453,"code":656,"filename":455,"language":456,"meta":370,"style":370},"import 'package:flutter/foundation.dart';\nimport 'package:flutter/material.dart';\nimport 'package:qora_flutter/qora_flutter.dart';\n\nvoid main() {\n  final client = QoraClient(\n    config: const QoraClientConfig(debugMode: kDebugMode),\n  );\n\n  runApp(\n    QoraScope(\n      client: client,\n      child: const MyApp(),\n    ),\n  );\n}\n",[356,658,659,667,676,684,688,700,713,735,741,745,752,759,771,788,795,802],{"__ignoreMap":370},[374,660,661,663,665],{"class":376,"line":377},[374,662,464],{"class":463},[374,664,467],{"class":396},[374,666,470],{"class":384},[374,668,669,671,674],{"class":376,"line":388},[374,670,464],{"class":463},[374,672,673],{"class":396}," 'package:flutter/material.dart'",[374,675,470],{"class":384},[374,677,678,680,682],{"class":376,"line":482},[374,679,464],{"class":463},[374,681,477],{"class":396},[374,683,470],{"class":384},[374,685,686],{"class":376,"line":489},[374,687,486],{"emptyLinePlaceholder":485},[374,689,690,693,697],{"class":376,"line":509},[374,691,692],{"class":492},"void",[374,694,696],{"class":695},"s2Zo4"," main",[374,698,699],{"class":496},"() {\n",[374,701,702,705,707,709,711],{"class":376,"line":522},[374,703,704],{"class":492},"  final",[374,706,497],{"class":496},[374,708,500],{"class":384},[374,710,503],{"class":412},[374,712,506],{"class":496},[374,714,715,718,720,723,725,728,730,733],{"class":376,"line":535},[374,716,717],{"class":496},"    config",[374,719,363],{"class":384},[374,721,722],{"class":492}," const",[374,724,517],{"class":412},[374,726,727],{"class":496},"(debugMode",[374,729,363],{"class":384},[374,731,732],{"class":496}," kDebugMode)",[374,734,557],{"class":384},[374,736,737,739],{"class":376,"line":560},[374,738,618],{"class":496},[374,740,470],{"class":384},[374,742,743],{"class":376,"line":581},[374,744,486],{"emptyLinePlaceholder":485},[374,746,747,750],{"class":376,"line":594},[374,748,749],{"class":695},"  runApp",[374,751,506],{"class":496},[374,753,754,757],{"class":376,"line":602},[374,755,756],{"class":412},"    QoraScope",[374,758,506],{"class":496},[374,760,761,764,766,769],{"class":376,"line":615},[374,762,763],{"class":496},"      client",[374,765,363],{"class":384},[374,767,768],{"class":496}," client",[374,770,557],{"class":384},[374,772,773,776,778,780,783,786],{"class":376,"line":623},[374,774,775],{"class":496},"      child",[374,777,363],{"class":384},[374,779,722],{"class":492},[374,781,782],{"class":412}," MyApp",[374,784,785],{"class":496},"()",[374,787,557],{"class":384},[374,789,791,793],{"class":376,"line":790},14,[374,792,597],{"class":496},[374,794,557],{"class":384},[374,796,798,800],{"class":376,"line":797},15,[374,799,618],{"class":496},[374,801,470],{"class":384},[374,803,805],{"class":376,"line":804},16,[374,806,807],{"class":496},"}\n",[352,809,810,811,814,815,818],{},"Any descendant widget can now access the client via ",[356,812,813],{},"context.qora"," or ",[356,816,817],{},"QoraScope.of(context)",".",[435,820],{},[348,822,824],{"id":823},"optional-lifecycle-and-connectivity-managers","Optional: Lifecycle and Connectivity Managers",[352,826,827,828,363],{},"For automatic refetch-on-resume and refetch-on-reconnect behavior, pass the built-in managers to ",[356,829,103],{},[365,831,833],{"className":453,"code":832,"filename":455,"language":456,"meta":370,"style":370},"void main() {\n  final client = QoraClient();\n\n  runApp(\n    QoraScope(\n      client: client,\n      lifecycleManager: FlutterLifecycleManager(\n        qoraClient: client,\n        // Invalidate all queries if the app was backgrounded for more than 30 s\n        minBackgroundDuration: const Duration(seconds: 30),\n      ),\n      connectivityManager: FlutterConnectivityManager(),\n      child: const MyApp(),\n    ),\n  );\n}\n",[356,834,835,843,857,861,867,873,883,895,906,912,935,942,956,970,976,982],{"__ignoreMap":370},[374,836,837,839,841],{"class":376,"line":377},[374,838,692],{"class":492},[374,840,696],{"class":695},[374,842,699],{"class":496},[374,844,845,847,849,851,853,855],{"class":376,"line":388},[374,846,704],{"class":492},[374,848,497],{"class":496},[374,850,500],{"class":384},[374,852,503],{"class":412},[374,854,785],{"class":496},[374,856,470],{"class":384},[374,858,859],{"class":376,"line":482},[374,860,486],{"emptyLinePlaceholder":485},[374,862,863,865],{"class":376,"line":489},[374,864,749],{"class":695},[374,866,506],{"class":496},[374,868,869,871],{"class":376,"line":509},[374,870,756],{"class":412},[374,872,506],{"class":496},[374,874,875,877,879,881],{"class":376,"line":522},[374,876,763],{"class":496},[374,878,363],{"class":384},[374,880,768],{"class":496},[374,882,557],{"class":384},[374,884,885,888,890,893],{"class":376,"line":535},[374,886,887],{"class":496},"      lifecycleManager",[374,889,363],{"class":384},[374,891,892],{"class":412}," FlutterLifecycleManager",[374,894,506],{"class":496},[374,896,897,900,902,904],{"class":376,"line":560},[374,898,899],{"class":496},"        qoraClient",[374,901,363],{"class":384},[374,903,768],{"class":496},[374,905,557],{"class":384},[374,907,908],{"class":376,"line":581},[374,909,911],{"class":910},"sHwdD","        // Invalidate all queries if the app was backgrounded for more than 30 s\n",[374,913,914,917,919,921,923,926,928,931,933],{"class":376,"line":594},[374,915,916],{"class":496},"        minBackgroundDuration",[374,918,363],{"class":384},[374,920,722],{"class":492},[374,922,543],{"class":412},[374,924,925],{"class":496},"(seconds",[374,927,363],{"class":384},[374,929,930],{"class":463}," 30",[374,932,554],{"class":496},[374,934,557],{"class":384},[374,936,937,940],{"class":376,"line":602},[374,938,939],{"class":496},"      )",[374,941,557],{"class":384},[374,943,944,947,949,952,954],{"class":376,"line":615},[374,945,946],{"class":496},"      connectivityManager",[374,948,363],{"class":384},[374,950,951],{"class":412}," FlutterConnectivityManager",[374,953,785],{"class":496},[374,955,557],{"class":384},[374,957,958,960,962,964,966,968],{"class":376,"line":623},[374,959,775],{"class":496},[374,961,363],{"class":384},[374,963,722],{"class":492},[374,965,782],{"class":412},[374,967,785],{"class":496},[374,969,557],{"class":384},[374,971,972,974],{"class":376,"line":790},[374,973,597],{"class":496},[374,975,557],{"class":384},[374,977,978,980],{"class":376,"line":797},[374,979,618],{"class":496},[374,981,470],{"class":384},[374,983,984],{"class":376,"line":804},[374,985,807],{"class":496},[987,988,989,1002],"table",{},[990,991,992],"thead",{},[993,994,995,999],"tr",{},[996,997,998],"th",{},"Manager",[996,1000,1001],{},"Behaviour",[1003,1004,1005,1019],"tbody",{},[993,1006,1007,1013],{},[1008,1009,1010],"td",{},[356,1011,1012],{},"FlutterLifecycleManager",[1008,1014,1015,1016,818],{},"Invalidates all queries when the app resumes after a pause longer than ",[356,1017,1018],{},"minBackgroundDuration",[993,1020,1021,1026],{},[1008,1022,1023],{},[356,1024,1025],{},"FlutterConnectivityManager",[1008,1027,1028,1029,1032,1033,1035,1036,818],{},"Emits ",[356,1030,1031],{},"NetworkStatus"," events; reconnect logic is delegated to ",[356,1034,202],{}," via ",[356,1037,1038],{},"reconnectStrategy",[352,1040,1041,1043,1044,429,1047,1050],{},[356,1042,103],{}," automatically calls ",[356,1045,1046],{},"start()",[356,1048,1049],{},"dispose()"," on both managers: no manual lifecycle wiring required.",[1052,1053,1055,1056],"h3",{"id":1054},"shorthand-qorascopeauto","Shorthand: ",[356,1057,1058],{},"QoraScope.auto()",[352,1060,1061,1062,1064],{},"For convenience, use ",[356,1063,1058],{}," to wire both managers in a single call:",[365,1066,1068],{"className":453,"code":1067,"filename":455,"language":456,"meta":370,"style":370},"void main() {\n  runApp(\n    QoraScope.auto(\n      client: QoraClient(),\n      child: const MyApp(),\n    ),\n  );\n}\n",[356,1069,1070,1078,1084,1095,1107,1121,1127,1133],{"__ignoreMap":370},[374,1071,1072,1074,1076],{"class":376,"line":377},[374,1073,692],{"class":492},[374,1075,696],{"class":695},[374,1077,699],{"class":496},[374,1079,1080,1082],{"class":376,"line":388},[374,1081,749],{"class":695},[374,1083,506],{"class":496},[374,1085,1086,1088,1090,1093],{"class":376,"line":482},[374,1087,756],{"class":412},[374,1089,818],{"class":384},[374,1091,1092],{"class":695},"auto",[374,1094,506],{"class":496},[374,1096,1097,1099,1101,1103,1105],{"class":376,"line":489},[374,1098,763],{"class":496},[374,1100,363],{"class":384},[374,1102,503],{"class":412},[374,1104,785],{"class":496},[374,1106,557],{"class":384},[374,1108,1109,1111,1113,1115,1117,1119],{"class":376,"line":509},[374,1110,775],{"class":496},[374,1112,363],{"class":384},[374,1114,722],{"class":492},[374,1116,782],{"class":412},[374,1118,785],{"class":496},[374,1120,557],{"class":384},[374,1122,1123,1125],{"class":376,"line":522},[374,1124,597],{"class":496},[374,1126,557],{"class":384},[374,1128,1129,1131],{"class":376,"line":535},[374,1130,618],{"class":496},[374,1132,470],{"class":384},[374,1134,1135],{"class":376,"line":560},[374,1136,807],{"class":496},[352,1138,1139,1140,429,1142,1144,1145,429,1148,1151],{},"This is equivalent to manually passing ",[356,1141,1012],{},[356,1143,1025],{},". Use ",[356,1146,1147],{},"enableLifecycle",[356,1149,1150],{},"enableConnectivity"," to disable specific listeners:",[365,1153,1155],{"className":453,"code":1154,"filename":455,"language":456,"meta":370,"style":370},"QoraScope.auto(\n  client: QoraClient(),\n  enableLifecycle: false,               // disable refetch-on-resume\n  enableConnectivity: false,            // disable refetch-on-reconnect\n  minBackgroundDuration: const Duration(seconds: 30),\n  child: const MyApp(),\n)\n",[356,1156,1157,1167,1180,1193,1205,1226,1241],{"__ignoreMap":370},[374,1158,1159,1161,1163,1165],{"class":376,"line":377},[374,1160,103],{"class":412},[374,1162,818],{"class":384},[374,1164,1092],{"class":695},[374,1166,506],{"class":496},[374,1168,1169,1172,1174,1176,1178],{"class":376,"line":388},[374,1170,1171],{"class":496},"  client",[374,1173,363],{"class":384},[374,1175,503],{"class":412},[374,1177,785],{"class":496},[374,1179,557],{"class":384},[374,1181,1182,1185,1187,1190],{"class":376,"line":482},[374,1183,1184],{"class":496},"  enableLifecycle",[374,1186,363],{"class":384},[374,1188,1189],{"class":384}," false,",[374,1191,1192],{"class":910},"               // disable refetch-on-resume\n",[374,1194,1195,1198,1200,1202],{"class":376,"line":489},[374,1196,1197],{"class":496},"  enableConnectivity",[374,1199,363],{"class":384},[374,1201,1189],{"class":384},[374,1203,1204],{"class":910},"            // disable refetch-on-reconnect\n",[374,1206,1207,1210,1212,1214,1216,1218,1220,1222,1224],{"class":376,"line":509},[374,1208,1209],{"class":496},"  minBackgroundDuration",[374,1211,363],{"class":384},[374,1213,722],{"class":492},[374,1215,543],{"class":412},[374,1217,925],{"class":496},[374,1219,363],{"class":384},[374,1221,930],{"class":463},[374,1223,554],{"class":496},[374,1225,557],{"class":384},[374,1227,1228,1231,1233,1235,1237,1239],{"class":376,"line":522},[374,1229,1230],{"class":496},"  child",[374,1232,363],{"class":384},[374,1234,722],{"class":492},[374,1236,782],{"class":412},[374,1238,785],{"class":496},[374,1240,557],{"class":384},[374,1242,1243],{"class":376,"line":535},[374,1244,1245],{"class":496},")\n",[987,1247,1248,1264],{},[990,1249,1250],{},[993,1251,1252,1255,1258,1261],{},[996,1253,1254],{},"Parameter",[996,1256,1257],{},"Type",[996,1259,1260],{},"Default",[996,1262,1263],{},"Description",[1003,1265,1266,1288,1307],{},[993,1267,1268,1272,1277,1282],{},[1008,1269,1270],{},[356,1271,1147],{},[1008,1273,1274],{},[356,1275,1276],{},"bool",[1008,1278,1279],{},[356,1280,1281],{},"true",[1008,1283,1284,1285,1287],{},"Enables ",[356,1286,1012],{}," (refetch on app resume).",[993,1289,1290,1294,1298,1302],{},[1008,1291,1292],{},[356,1293,1150],{},[1008,1295,1296],{},[356,1297,1276],{},[1008,1299,1300],{},[356,1301,1281],{},[1008,1303,1284,1304,1306],{},[356,1305,1025],{}," (refetch on reconnect).",[993,1308,1309,1313,1318,1323],{},[1008,1310,1311],{},[356,1312,1018],{},[1008,1314,1315],{},[356,1316,1317],{},"Duration",[1008,1319,1320],{},[356,1321,1322],{},"Duration(seconds: 5)",[1008,1324,1325],{},"Minimum pause before invalidation on resume.",[435,1327],{},[348,1329,1331],{"id":1330},"next-steps","Next Steps",[1333,1334,1335,1343],"ul",{},[1336,1337,1338,1342],"li",{},[1339,1340,103],"a",{"href":1341},"./qora-scope",": Detailed API and nested scope patterns",[1336,1344,1345,1348],{},[1339,1346,108],{"href":1347},"./qora-builder",": Fetching data and rendering states in widgets",[1350,1351,1352],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}",{"title":370,"searchDepth":388,"depth":388,"links":1354},[1355,1356,1357,1358,1362],{"id":350,"depth":388,"text":16},{"id":439,"depth":388,"text":440},{"id":639,"depth":388,"text":640},{"id":823,"depth":388,"text":824,"children":1359},[1360],{"id":1054,"depth":482,"text":1361},"Shorthand: QoraScope.auto()",{"id":1330,"depth":388,"text":1331},"Install qora_flutter, create a QoraClient instance, and provide it to the widget tree with QoraScope.","md",null,{},{"icon":101},{"title":98,"description":1363},"RbeRPExQ7KSvMVcWVpYhKJtFXB9IcERieejDU-S5By4",[1371,1373],{"title":87,"path":88,"stem":89,"description":1372,"icon":90,"children":-1},"What Qora does with reads and writes while the device is offline, what happens on reconnect, and what survives an app restart.",{"title":103,"path":104,"stem":105,"description":1374,"icon":106,"children":-1},"The StatefulWidget that provides a QoraClient to your widget tree and manages the lifecycle of optional platform managers.",1794040396243]