[{"data":1,"prerenderedAt":1764},["ShallowReactive",2],{"navigation_docs_en":3,"-en-recipes-dependent-queries":342,"-en-recipes-dependent-queries-surround":1759},[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":167,"body":344,"description":1752,"extension":1753,"links":1754,"meta":1755,"navigation":1756,"path":168,"seo":1757,"stem":169,"__hash__":1758},"docs_en/en/04.recipes/07.dependent-queries.md",{"type":345,"value":346,"toc":1740},"minimark",[347,356,359,367,374,582,584,588,644,646,652,658,1033,1039,1041,1050,1055,1324,1326,1330,1339,1583,1585,1591,1596,1695,1701,1703,1707,1736],[348,349,350,351,355],"p",{},"A ",[352,353,354],"strong",{},"dependent query"," fires only after another query has successfully loaded its data. This is the pattern for sequential data-fetching: load a session first, then load the user profile; load a project, then load its members.",[357,358],"hr",{},[360,361,363],"h2",{"id":362},"dependson",[364,365,366],"code",{},"dependsOn",[348,368,369,370,373],{},"Set ",[364,371,372],{},"QoraOptions.dependsOn"," to the key of the prerequisite query. Qora subscribes internally and triggers the dependent fetch when data becomes available.",[375,376,382],"pre",{"className":377,"code":378,"filename":379,"language":380,"meta":381,"style":381},"language-dart shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","// Step 1: fetch the session\nclient.watchQuery\u003CSession>(\n  key: ['session'],\n  fetcher: () => api.getSession(),\n);\n\n// Step 2: fires automatically once ['session'] has data\nclient.watchQuery\u003CUser>(\n  key: ['user'],\n  fetcher: () => api.getUser(session!.userId),\n  options: QoraOptions(dependsOn: ['session']),\n);\n","main.dart","dart","",[364,383,384,393,418,440,467,476,483,489,505,521,550,575],{"__ignoreMap":381},[385,386,389],"span",{"class":387,"line":388},"line",1,[385,390,392],{"class":391},"sHwdD","// Step 1: fetch the session\n",[385,394,396,400,404,408,411,415],{"class":387,"line":395},2,[385,397,399],{"class":398},"sTEyZ","client",[385,401,403],{"class":402},"sMK4o",".",[385,405,407],{"class":406},"s2Zo4","watchQuery",[385,409,410],{"class":398},"\u003C",[385,412,414],{"class":413},"sBMFI","Session",[385,416,417],{"class":398},">(\n",[385,419,421,424,427,430,434,437],{"class":387,"line":420},3,[385,422,423],{"class":398},"  key",[385,425,426],{"class":402},":",[385,428,429],{"class":398}," [",[385,431,433],{"class":432},"sfazB","'session'",[385,435,436],{"class":398},"]",[385,438,439],{"class":402},",\n",[385,441,443,446,448,451,454,457,459,462,465],{"class":387,"line":442},4,[385,444,445],{"class":398},"  fetcher",[385,447,426],{"class":402},[385,449,450],{"class":398}," () ",[385,452,453],{"class":402},"=>",[385,455,456],{"class":398}," api",[385,458,403],{"class":402},[385,460,461],{"class":406},"getSession",[385,463,464],{"class":398},"()",[385,466,439],{"class":402},[385,468,470,473],{"class":387,"line":469},5,[385,471,472],{"class":398},")",[385,474,475],{"class":402},";\n",[385,477,479],{"class":387,"line":478},6,[385,480,482],{"emptyLinePlaceholder":481},true,"\n",[385,484,486],{"class":387,"line":485},7,[385,487,488],{"class":391},"// Step 2: fires automatically once ['session'] has data\n",[385,490,492,494,496,498,500,503],{"class":387,"line":491},8,[385,493,399],{"class":398},[385,495,403],{"class":402},[385,497,407],{"class":406},[385,499,410],{"class":398},[385,501,502],{"class":413},"User",[385,504,417],{"class":398},[385,506,508,510,512,514,517,519],{"class":387,"line":507},9,[385,509,423],{"class":398},[385,511,426],{"class":402},[385,513,429],{"class":398},[385,515,516],{"class":432},"'user'",[385,518,436],{"class":398},[385,520,439],{"class":402},[385,522,524,526,528,530,532,534,536,539,542,545,548],{"class":387,"line":523},10,[385,525,445],{"class":398},[385,527,426],{"class":402},[385,529,450],{"class":398},[385,531,453],{"class":402},[385,533,456],{"class":398},[385,535,403],{"class":402},[385,537,538],{"class":406},"getUser",[385,540,541],{"class":398},"(session",[385,543,544],{"class":402},"!.",[385,546,547],{"class":398},"userId)",[385,549,439],{"class":402},[385,551,553,556,558,561,564,566,568,570,573],{"class":387,"line":552},11,[385,554,555],{"class":398},"  options",[385,557,426],{"class":402},[385,559,560],{"class":413}," QoraOptions",[385,562,563],{"class":398},"(dependsOn",[385,565,426],{"class":402},[385,567,429],{"class":398},[385,569,433],{"class":432},[385,571,572],{"class":398},"])",[385,574,439],{"class":402},[385,576,578,580],{"class":387,"line":577},12,[385,579,472],{"class":398},[385,581,475],{"class":402},[357,583],{},[360,585,587],{"id":586},"behaviour-per-api","Behaviour per API",[589,590,591,604],"table",{},[592,593,594],"thead",{},[595,596,597,601],"tr",{},[598,599,600],"th",{},"API",[598,602,603],{},"Behaviour when dependency is unresolved",[605,606,607,620,634],"tbody",{},[595,608,609,614],{},[610,611,612],"td",{},[364,613,407],{},[610,615,616,617],{},"Subscribes reactively; fires when dependency reaches ",[364,618,619],{},"Success",[595,621,622,627],{},[610,623,624],{},[364,625,626],{},"fetchQuery",[610,628,629,630,633],{},"Throws ",[364,631,632],{},"StateError"," immediately. Call after dependency resolution.",[595,635,636,641],{},[610,637,638],{},[364,639,640],{},"prefetch",[610,642,643],{},"Silently skips. Safe to call speculatively.",[357,645],{},[360,647,649,650],{"id":648},"in-flutter-qorabuilder","In Flutter: ",[364,651,108],{},[348,653,654,655,657],{},"The cleanest Flutter pattern is to nest a ",[364,656,108],{}," for the dependent query inside the success case of the parent:",[375,659,662],{"className":377,"code":660,"filename":661,"language":380,"meta":381,"style":381},"QoraBuilder\u003CSession>(\n  queryKey: ['session'],\n  fetcher: () => api.getSession(),\n  builder: (context, sessionState, refetch) => switch (sessionState) {\n    Loading() || Initial() => const CircularProgressIndicator(),\n    Failure(:final error) => ErrorWidget('$error'),\n    Success(:final data) => QoraBuilder\u003CUser>(\n      queryKey: ['user', data.userId],\n      fetcher: () => api.getUser(data.userId),\n      builder: (context, userState, _) => switch (userState) {\n        Success(:final data) => ProfileCard(data),\n        Loading() => const CircularProgressIndicator(),\n        Failure(:final error) => ErrorWidget('$error'),\n        Initial() => const SizedBox.shrink(),\n      },\n    ),\n  },\n)\n","profile_screen.dart",[364,663,664,674,689,709,739,768,807,832,855,881,907,930,947,979,1003,1011,1019,1027],{"__ignoreMap":381},[385,665,666,668,670,672],{"class":387,"line":388},[385,667,108],{"class":413},[385,669,410],{"class":398},[385,671,414],{"class":413},[385,673,417],{"class":398},[385,675,676,679,681,683,685,687],{"class":387,"line":395},[385,677,678],{"class":398},"  queryKey",[385,680,426],{"class":402},[385,682,429],{"class":398},[385,684,433],{"class":432},[385,686,436],{"class":398},[385,688,439],{"class":402},[385,690,691,693,695,697,699,701,703,705,707],{"class":387,"line":420},[385,692,445],{"class":398},[385,694,426],{"class":402},[385,696,450],{"class":398},[385,698,453],{"class":402},[385,700,456],{"class":398},[385,702,403],{"class":402},[385,704,461],{"class":406},[385,706,464],{"class":398},[385,708,439],{"class":402},[385,710,711,714,716,719,722,725,727,730,732,736],{"class":387,"line":442},[385,712,713],{"class":398},"  builder",[385,715,426],{"class":402},[385,717,718],{"class":398}," (context",[385,720,721],{"class":402},",",[385,723,724],{"class":398}," sessionState",[385,726,721],{"class":402},[385,728,729],{"class":398}," refetch) ",[385,731,453],{"class":402},[385,733,735],{"class":734},"s7zQu"," switch",[385,737,738],{"class":398}," (sessionState) {\n",[385,740,741,744,747,750,753,755,757,761,764,766],{"class":387,"line":469},[385,742,743],{"class":413},"    Loading",[385,745,746],{"class":398},"() ",[385,748,749],{"class":402},"||",[385,751,752],{"class":413}," Initial",[385,754,746],{"class":398},[385,756,453],{"class":402},[385,758,760],{"class":759},"spNyl"," const",[385,762,763],{"class":413}," CircularProgressIndicator",[385,765,464],{"class":398},[385,767,439],{"class":402},[385,769,770,773,776,778,781,784,786,789,791,794,797,801,803,805],{"class":387,"line":478},[385,771,772],{"class":413},"    Failure",[385,774,775],{"class":398},"(",[385,777,426],{"class":402},[385,779,780],{"class":759},"final",[385,782,783],{"class":398}," error) ",[385,785,453],{"class":402},[385,787,788],{"class":413}," ErrorWidget",[385,790,775],{"class":398},[385,792,793],{"class":432},"'",[385,795,796],{"class":398},"$",[385,798,800],{"class":799},"sHdIc","error",[385,802,793],{"class":432},[385,804,472],{"class":398},[385,806,439],{"class":402},[385,808,809,812,814,816,818,821,823,826,828,830],{"class":387,"line":485},[385,810,811],{"class":413},"    Success",[385,813,775],{"class":398},[385,815,426],{"class":402},[385,817,780],{"class":759},[385,819,820],{"class":398}," data) ",[385,822,453],{"class":402},[385,824,825],{"class":413}," QoraBuilder",[385,827,410],{"class":398},[385,829,502],{"class":413},[385,831,417],{"class":398},[385,833,834,837,839,841,843,845,848,850,853],{"class":387,"line":491},[385,835,836],{"class":398},"      queryKey",[385,838,426],{"class":402},[385,840,429],{"class":398},[385,842,516],{"class":432},[385,844,721],{"class":402},[385,846,847],{"class":398}," data",[385,849,403],{"class":402},[385,851,852],{"class":398},"userId]",[385,854,439],{"class":402},[385,856,857,860,862,864,866,868,870,872,875,877,879],{"class":387,"line":507},[385,858,859],{"class":398},"      fetcher",[385,861,426],{"class":402},[385,863,450],{"class":398},[385,865,453],{"class":402},[385,867,456],{"class":398},[385,869,403],{"class":402},[385,871,538],{"class":406},[385,873,874],{"class":398},"(data",[385,876,403],{"class":402},[385,878,547],{"class":398},[385,880,439],{"class":402},[385,882,883,886,888,890,892,895,897,900,902,904],{"class":387,"line":523},[385,884,885],{"class":398},"      builder",[385,887,426],{"class":402},[385,889,718],{"class":398},[385,891,721],{"class":402},[385,893,894],{"class":398}," userState",[385,896,721],{"class":402},[385,898,899],{"class":398}," _) ",[385,901,453],{"class":402},[385,903,735],{"class":734},[385,905,906],{"class":398}," (userState) {\n",[385,908,909,912,914,916,918,920,922,925,928],{"class":387,"line":552},[385,910,911],{"class":413},"        Success",[385,913,775],{"class":398},[385,915,426],{"class":402},[385,917,780],{"class":759},[385,919,820],{"class":398},[385,921,453],{"class":402},[385,923,924],{"class":413}," ProfileCard",[385,926,927],{"class":398},"(data)",[385,929,439],{"class":402},[385,931,932,935,937,939,941,943,945],{"class":387,"line":577},[385,933,934],{"class":413},"        Loading",[385,936,746],{"class":398},[385,938,453],{"class":402},[385,940,760],{"class":759},[385,942,763],{"class":413},[385,944,464],{"class":398},[385,946,439],{"class":402},[385,948,950,953,955,957,959,961,963,965,967,969,971,973,975,977],{"class":387,"line":949},13,[385,951,952],{"class":413},"        Failure",[385,954,775],{"class":398},[385,956,426],{"class":402},[385,958,780],{"class":759},[385,960,783],{"class":398},[385,962,453],{"class":402},[385,964,788],{"class":413},[385,966,775],{"class":398},[385,968,793],{"class":432},[385,970,796],{"class":398},[385,972,800],{"class":799},[385,974,793],{"class":432},[385,976,472],{"class":398},[385,978,439],{"class":402},[385,980,982,985,987,989,991,994,996,999,1001],{"class":387,"line":981},14,[385,983,984],{"class":413},"        Initial",[385,986,746],{"class":398},[385,988,453],{"class":402},[385,990,760],{"class":759},[385,992,993],{"class":413}," SizedBox",[385,995,403],{"class":402},[385,997,998],{"class":406},"shrink",[385,1000,464],{"class":398},[385,1002,439],{"class":402},[385,1004,1006,1009],{"class":387,"line":1005},15,[385,1007,1008],{"class":398},"      }",[385,1010,439],{"class":402},[385,1012,1014,1017],{"class":387,"line":1013},16,[385,1015,1016],{"class":398},"    )",[385,1018,439],{"class":402},[385,1020,1022,1025],{"class":387,"line":1021},17,[385,1023,1024],{"class":398},"  }",[385,1026,439],{"class":402},[385,1028,1030],{"class":387,"line":1029},18,[385,1031,1032],{"class":398},")\n",[348,1034,1035,1036,1038],{},"The inner ",[364,1037,108],{}," only mounts when the session is ready, so the dependent fetch never fires prematurely.",[357,1040],{},[360,1042,1044,1045,1047,1048],{"id":1043},"using-dependson-with-watchquery","Using ",[364,1046,366],{}," with ",[364,1049,407],{},[348,1051,1052,1053,426],{},"When both queries need to be active simultaneously (e.g. in a repository layer without Flutter), use ",[364,1054,366],{},[375,1056,1059],{"className":377,"code":1057,"filename":1058,"language":380,"meta":381,"style":381},"class UserRepository {\n  final QoraClient _client;\n\n  Stream\u003CQoraState\u003CUser>> watchCurrentUser() {\n    // Ensure the session query is running\n    _client.watchQuery\u003CSession>(\n      key: ['session'],\n      fetcher: () => api.getSession(),\n    );\n\n    // This query waits for ['session'] to have data before fetching\n    return _client.watchQuery\u003CUser>(\n      key: ['user'],\n      fetcher: () async {\n        final session = _client.getQueryData\u003CSession>(['session'])!;\n        return api.getUser(session.userId);\n      },\n      options: const QoraOptions(dependsOn: ['session']),\n    );\n  }\n}\n","user_repository.dart",[364,1060,1061,1072,1085,1089,1111,1116,1131,1146,1166,1172,1176,1181,1198,1212,1225,1257,1276,1282,1305,1312,1318],{"__ignoreMap":381},[385,1062,1063,1066,1069],{"class":387,"line":388},[385,1064,1065],{"class":402},"class",[385,1067,1068],{"class":413}," UserRepository",[385,1070,1071],{"class":398}," {\n",[385,1073,1074,1077,1080,1083],{"class":387,"line":395},[385,1075,1076],{"class":759},"  final",[385,1078,1079],{"class":413}," QoraClient",[385,1081,1082],{"class":398}," _client",[385,1084,475],{"class":402},[385,1086,1087],{"class":387,"line":420},[385,1088,482],{"emptyLinePlaceholder":481},[385,1090,1091,1094,1096,1098,1100,1102,1105,1108],{"class":387,"line":442},[385,1092,1093],{"class":413},"  Stream",[385,1095,410],{"class":398},[385,1097,211],{"class":413},[385,1099,410],{"class":398},[385,1101,502],{"class":413},[385,1103,1104],{"class":398},">> ",[385,1106,1107],{"class":406},"watchCurrentUser",[385,1109,1110],{"class":398},"() {\n",[385,1112,1113],{"class":387,"line":469},[385,1114,1115],{"class":391},"    // Ensure the session query is running\n",[385,1117,1118,1121,1123,1125,1127,1129],{"class":387,"line":478},[385,1119,1120],{"class":398},"    _client",[385,1122,403],{"class":402},[385,1124,407],{"class":406},[385,1126,410],{"class":398},[385,1128,414],{"class":413},[385,1130,417],{"class":398},[385,1132,1133,1136,1138,1140,1142,1144],{"class":387,"line":485},[385,1134,1135],{"class":398},"      key",[385,1137,426],{"class":402},[385,1139,429],{"class":398},[385,1141,433],{"class":432},[385,1143,436],{"class":398},[385,1145,439],{"class":402},[385,1147,1148,1150,1152,1154,1156,1158,1160,1162,1164],{"class":387,"line":491},[385,1149,859],{"class":398},[385,1151,426],{"class":402},[385,1153,450],{"class":398},[385,1155,453],{"class":402},[385,1157,456],{"class":398},[385,1159,403],{"class":402},[385,1161,461],{"class":406},[385,1163,464],{"class":398},[385,1165,439],{"class":402},[385,1167,1168,1170],{"class":387,"line":507},[385,1169,1016],{"class":398},[385,1171,475],{"class":402},[385,1173,1174],{"class":387,"line":523},[385,1175,482],{"emptyLinePlaceholder":481},[385,1177,1178],{"class":387,"line":552},[385,1179,1180],{"class":391},"    // This query waits for ['session'] to have data before fetching\n",[385,1182,1183,1186,1188,1190,1192,1194,1196],{"class":387,"line":577},[385,1184,1185],{"class":734},"    return",[385,1187,1082],{"class":398},[385,1189,403],{"class":402},[385,1191,407],{"class":406},[385,1193,410],{"class":398},[385,1195,502],{"class":413},[385,1197,417],{"class":398},[385,1199,1200,1202,1204,1206,1208,1210],{"class":387,"line":949},[385,1201,1135],{"class":398},[385,1203,426],{"class":402},[385,1205,429],{"class":398},[385,1207,516],{"class":432},[385,1209,436],{"class":398},[385,1211,439],{"class":402},[385,1213,1214,1216,1218,1220,1223],{"class":387,"line":981},[385,1215,859],{"class":398},[385,1217,426],{"class":402},[385,1219,450],{"class":398},[385,1221,1222],{"class":734},"async",[385,1224,1071],{"class":398},[385,1226,1227,1230,1233,1236,1238,1240,1243,1245,1247,1250,1252,1254],{"class":387,"line":1005},[385,1228,1229],{"class":759},"        final",[385,1231,1232],{"class":398}," session ",[385,1234,1235],{"class":402},"=",[385,1237,1082],{"class":398},[385,1239,403],{"class":402},[385,1241,1242],{"class":406},"getQueryData",[385,1244,410],{"class":398},[385,1246,414],{"class":413},[385,1248,1249],{"class":398},">([",[385,1251,433],{"class":432},[385,1253,572],{"class":398},[385,1255,1256],{"class":402},"!;\n",[385,1258,1259,1262,1264,1266,1268,1270,1272,1274],{"class":387,"line":1013},[385,1260,1261],{"class":734},"        return",[385,1263,456],{"class":398},[385,1265,403],{"class":402},[385,1267,538],{"class":406},[385,1269,541],{"class":398},[385,1271,403],{"class":402},[385,1273,547],{"class":398},[385,1275,475],{"class":402},[385,1277,1278,1280],{"class":387,"line":1021},[385,1279,1008],{"class":398},[385,1281,439],{"class":402},[385,1283,1284,1287,1289,1291,1293,1295,1297,1299,1301,1303],{"class":387,"line":1029},[385,1285,1286],{"class":398},"      options",[385,1288,426],{"class":402},[385,1290,760],{"class":759},[385,1292,560],{"class":413},[385,1294,563],{"class":398},[385,1296,426],{"class":402},[385,1298,429],{"class":398},[385,1300,433],{"class":432},[385,1302,572],{"class":398},[385,1304,439],{"class":402},[385,1306,1308,1310],{"class":387,"line":1307},19,[385,1309,1016],{"class":398},[385,1311,475],{"class":402},[385,1313,1315],{"class":387,"line":1314},20,[385,1316,1317],{"class":398},"  }\n",[385,1319,1321],{"class":387,"line":1320},21,[385,1322,1323],{"class":398},"}\n",[357,1325],{},[360,1327,1329],{"id":1328},"chaining-multiple-dependencies","Chaining Multiple Dependencies",[348,1331,1332,1333,1335,1336,1338],{},"A query can only declare a single ",[364,1334,366],{},". For a chain of three queries, nest the ",[364,1337,366],{}," at each step:",[375,1340,1342],{"className":377,"code":1341,"filename":379,"language":380,"meta":381,"style":381},"// 1: session\nclient.watchQuery\u003CSession>(key: ['session'], fetcher: () => api.getSession());\n\n// 2: user (depends on session)\nclient.watchQuery\u003CUser>(\n  key: ['user'],\n  fetcher: () => api.getUser(session!.userId),\n  options: const QoraOptions(dependsOn: ['session']),\n);\n\n// 3: projects (depends on user)\nclient.watchQuery\u003CList\u003CProject>>(\n  key: ['projects'],\n  fetcher: () => api.getProjects(user!.orgId),\n  options: const QoraOptions(dependsOn: ['user']),\n);\n",[364,1343,1344,1349,1394,1398,1403,1417,1431,1455,1477,1483,1487,1492,1513,1528,1555,1577],{"__ignoreMap":381},[385,1345,1346],{"class":387,"line":388},[385,1347,1348],{"class":391},"// 1: session\n",[385,1350,1351,1353,1355,1357,1359,1361,1364,1366,1368,1370,1372,1374,1377,1379,1381,1383,1385,1387,1389,1392],{"class":387,"line":395},[385,1352,399],{"class":398},[385,1354,403],{"class":402},[385,1356,407],{"class":406},[385,1358,410],{"class":398},[385,1360,414],{"class":413},[385,1362,1363],{"class":398},">(key",[385,1365,426],{"class":402},[385,1367,429],{"class":398},[385,1369,433],{"class":432},[385,1371,436],{"class":398},[385,1373,721],{"class":402},[385,1375,1376],{"class":398}," fetcher",[385,1378,426],{"class":402},[385,1380,450],{"class":398},[385,1382,453],{"class":402},[385,1384,456],{"class":398},[385,1386,403],{"class":402},[385,1388,461],{"class":406},[385,1390,1391],{"class":398},"())",[385,1393,475],{"class":402},[385,1395,1396],{"class":387,"line":420},[385,1397,482],{"emptyLinePlaceholder":481},[385,1399,1400],{"class":387,"line":442},[385,1401,1402],{"class":391},"// 2: user (depends on session)\n",[385,1404,1405,1407,1409,1411,1413,1415],{"class":387,"line":469},[385,1406,399],{"class":398},[385,1408,403],{"class":402},[385,1410,407],{"class":406},[385,1412,410],{"class":398},[385,1414,502],{"class":413},[385,1416,417],{"class":398},[385,1418,1419,1421,1423,1425,1427,1429],{"class":387,"line":478},[385,1420,423],{"class":398},[385,1422,426],{"class":402},[385,1424,429],{"class":398},[385,1426,516],{"class":432},[385,1428,436],{"class":398},[385,1430,439],{"class":402},[385,1432,1433,1435,1437,1439,1441,1443,1445,1447,1449,1451,1453],{"class":387,"line":485},[385,1434,445],{"class":398},[385,1436,426],{"class":402},[385,1438,450],{"class":398},[385,1440,453],{"class":402},[385,1442,456],{"class":398},[385,1444,403],{"class":402},[385,1446,538],{"class":406},[385,1448,541],{"class":398},[385,1450,544],{"class":402},[385,1452,547],{"class":398},[385,1454,439],{"class":402},[385,1456,1457,1459,1461,1463,1465,1467,1469,1471,1473,1475],{"class":387,"line":491},[385,1458,555],{"class":398},[385,1460,426],{"class":402},[385,1462,760],{"class":759},[385,1464,560],{"class":413},[385,1466,563],{"class":398},[385,1468,426],{"class":402},[385,1470,429],{"class":398},[385,1472,433],{"class":432},[385,1474,572],{"class":398},[385,1476,439],{"class":402},[385,1478,1479,1481],{"class":387,"line":507},[385,1480,472],{"class":398},[385,1482,475],{"class":402},[385,1484,1485],{"class":387,"line":523},[385,1486,482],{"emptyLinePlaceholder":481},[385,1488,1489],{"class":387,"line":552},[385,1490,1491],{"class":391},"// 3: projects (depends on user)\n",[385,1493,1494,1496,1498,1500,1502,1505,1507,1510],{"class":387,"line":577},[385,1495,399],{"class":398},[385,1497,403],{"class":402},[385,1499,407],{"class":406},[385,1501,410],{"class":398},[385,1503,1504],{"class":413},"List",[385,1506,410],{"class":398},[385,1508,1509],{"class":413},"Project",[385,1511,1512],{"class":398},">>(\n",[385,1514,1515,1517,1519,1521,1524,1526],{"class":387,"line":949},[385,1516,423],{"class":398},[385,1518,426],{"class":402},[385,1520,429],{"class":398},[385,1522,1523],{"class":432},"'projects'",[385,1525,436],{"class":398},[385,1527,439],{"class":402},[385,1529,1530,1532,1534,1536,1538,1540,1542,1545,1548,1550,1553],{"class":387,"line":981},[385,1531,445],{"class":398},[385,1533,426],{"class":402},[385,1535,450],{"class":398},[385,1537,453],{"class":402},[385,1539,456],{"class":398},[385,1541,403],{"class":402},[385,1543,1544],{"class":406},"getProjects",[385,1546,1547],{"class":398},"(user",[385,1549,544],{"class":402},[385,1551,1552],{"class":398},"orgId)",[385,1554,439],{"class":402},[385,1556,1557,1559,1561,1563,1565,1567,1569,1571,1573,1575],{"class":387,"line":1005},[385,1558,555],{"class":398},[385,1560,426],{"class":402},[385,1562,760],{"class":759},[385,1564,560],{"class":413},[385,1566,563],{"class":398},[385,1568,426],{"class":402},[385,1570,429],{"class":398},[385,1572,516],{"class":432},[385,1574,572],{"class":398},[385,1576,439],{"class":402},[385,1578,1579,1581],{"class":387,"line":1013},[385,1580,472],{"class":398},[385,1582,475],{"class":402},[357,1584],{},[360,1586,1588,1590],{"id":1587},"fetchquery-and-dependencies",[364,1589,626],{}," and Dependencies",[348,1592,1593,1595],{},[364,1594,626],{}," throws immediately if the dependency is not resolved. Use it only after you know the dependency has data:",[375,1597,1599],{"className":377,"code":1598,"filename":379,"language":380,"meta":381,"style":381},"// Only safe to call once ['session'] is in Success state\nfinal user = await client.fetchQuery\u003CUser>(\n  key: ['user'],\n  fetcher: () => api.getUser(session!.userId),\n  options: QoraOptions(dependsOn: ['session']),\n);\n",[364,1600,1601,1606,1631,1645,1669,1689],{"__ignoreMap":381},[385,1602,1603],{"class":387,"line":388},[385,1604,1605],{"class":391},"// Only safe to call once ['session'] is in Success state\n",[385,1607,1608,1610,1613,1615,1618,1621,1623,1625,1627,1629],{"class":387,"line":395},[385,1609,780],{"class":759},[385,1611,1612],{"class":398}," user ",[385,1614,1235],{"class":402},[385,1616,1617],{"class":734}," await",[385,1619,1620],{"class":398}," client",[385,1622,403],{"class":402},[385,1624,626],{"class":406},[385,1626,410],{"class":398},[385,1628,502],{"class":413},[385,1630,417],{"class":398},[385,1632,1633,1635,1637,1639,1641,1643],{"class":387,"line":420},[385,1634,423],{"class":398},[385,1636,426],{"class":402},[385,1638,429],{"class":398},[385,1640,516],{"class":432},[385,1642,436],{"class":398},[385,1644,439],{"class":402},[385,1646,1647,1649,1651,1653,1655,1657,1659,1661,1663,1665,1667],{"class":387,"line":442},[385,1648,445],{"class":398},[385,1650,426],{"class":402},[385,1652,450],{"class":398},[385,1654,453],{"class":402},[385,1656,456],{"class":398},[385,1658,403],{"class":402},[385,1660,538],{"class":406},[385,1662,541],{"class":398},[385,1664,544],{"class":402},[385,1666,547],{"class":398},[385,1668,439],{"class":402},[385,1670,1671,1673,1675,1677,1679,1681,1683,1685,1687],{"class":387,"line":469},[385,1672,555],{"class":398},[385,1674,426],{"class":402},[385,1676,560],{"class":413},[385,1678,563],{"class":398},[385,1680,426],{"class":402},[385,1682,429],{"class":398},[385,1684,433],{"class":432},[385,1686,572],{"class":398},[385,1688,439],{"class":402},[385,1690,1691,1693],{"class":387,"line":478},[385,1692,472],{"class":398},[385,1694,475],{"class":402},[348,1696,1697,1698,1700],{},"For reactive code, prefer ",[364,1699,407],{},": it handles the timing automatically.",[357,1702],{},[360,1704,1706],{"id":1705},"related","Related",[1708,1709,1710,1725,1731],"ul",{},[1711,1712,1713,1718,1719,1721,1722],"li",{},[1714,1715,1717],"a",{"href":1716},"../api-reference/qora-options","QoraOptions API",": ",[364,1720,366],{},", ",[364,1723,1724],{},"enabled",[1711,1726,1727,1730],{},[1714,1728,108],{"href":1729},"../flutter-integration/qora-builder",": Widget-level query binding",[1711,1732,1733],{},[1714,1734,21],{"href":1735},"../getting-started/quick-start",[1737,1738,1739],"style",{},"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 .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}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 .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}",{"title":381,"searchDepth":395,"depth":395,"links":1741},[1742,1743,1744,1746,1748,1749,1751],{"id":362,"depth":395,"text":366},{"id":586,"depth":395,"text":587},{"id":648,"depth":395,"text":1745},"In Flutter: QoraBuilder",{"id":1043,"depth":395,"text":1747},"Using dependsOn with watchQuery",{"id":1328,"depth":395,"text":1329},{"id":1587,"depth":395,"text":1750},"fetchQuery and Dependencies",{"id":1705,"depth":395,"text":1706},"Use QoraOptions.dependsOn to chain queries so one fires only after another resolves.","md",null,{},{"icon":170},{"title":167,"description":1752},"D6vuJSihg0Zz__Hb8swM9YCT-T2azkzPeB6odTKg_uU",[1760,1762],{"title":163,"path":164,"stem":165,"description":1761,"icon":121,"children":-1},"Implement forward and bi-directional pagination with InfiniteQueryObserver: load more on scroll, pull-to-refresh, windowed paging, and cursor-based APIs.",{"title":172,"path":173,"stem":174,"description":1763,"icon":175,"children":-1},"Use CancelToken to abort in-flight fetches cooperatively: on navigation, timeout, or user action.",1794040399254]