[{"data":1,"prerenderedAt":3839},["ShallowReactive",2],{"navigation_docs_en":3,"-en-api-reference-infinite-query":342,"-en-api-reference-infinite-query-surround":3834},[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":233,"body":344,"description":3825,"extension":3826,"links":3827,"meta":3828,"navigation":3829,"path":234,"seo":3830,"stem":235,"__hash__":3833},"docs_en/en/05.api-reference/8.infinite-query.md",{"type":345,"value":346,"toc":3784},"minimark",[347,355,359,381,400,405,474,480,484,591,595,601,649,655,736,741,778,794,799,832,844,850,874,885,891,914,923,926,932,939,1225,1231,1272,1275,1277,1283,1320,1328,1346,1348,1353,1390,1393,1396,1519,1525,1630,1633,1635,1641,1678,1685,1688,1746,1752,1754,1760,1766,1769,1894,1900,1903,2041,2043,2049,2052,2066,2077,2080,2159,2162,2205,2208,2213,2234,2237,2249,2261,2263,2268,2287,2290,2308,2323,2325,2330,2349,2352,2368,2378,2380,2385,2404,2417,2439,2441,2446,2460,2467,2469,2473,2497,2499,2505,2514,2517,2680,2684,2825,2827,2833,2845,2848,2918,2920,2925,2977,2996,2998,3004,3010,3053,3062,3064,3070,3105,3112,3114,3120,3158,3172,3219,3221,3227,3303,3312,3603,3605,3611,3663,3675,3677,3682,3700,3711,3747,3749,3753,3780],[348,349,351],"h2",{"id":350},"infinitedatatdata-tpageparam",[352,353,354],"code",{},"InfiniteData\u003CTData, TPageParam>",[356,357,358],"p",{},"Immutable container holding all fetched pages and their corresponding page parameters.",[356,360,361,364,365,368,369,372,373,376,377,380],{},[352,362,363],{},"TData"," is the type of a single page (e.g. ",[352,366,367],{},"List\u003CPost>","). ",[352,370,371],{},"TPageParam"," is the type of the page parameter (e.g. ",[352,374,375],{},"int",", ",[352,378,379],{},"String?",").",[356,382,383,384,387,388,391,392,395,396,399],{},"Both ",[352,385,386],{},"pages"," and ",[352,389,390],{},"pageParams"," are always the same length: ",[352,393,394],{},"pages[i]"," was fetched using ",[352,397,398],{},"pageParams[i]",".",[401,402,404],"h3",{"id":403},"constructor","Constructor",[406,407,412],"pre",{"className":408,"code":409,"language":410,"meta":411,"style":411},"language-dart shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","const InfiniteData({\n  required List\u003CTData> pages,\n  required List\u003CTPageParam> pageParams,\n})\n","dart","",[352,413,414,431,452,468],{"__ignoreMap":411},[415,416,419,423,427],"span",{"class":417,"line":418},"line",1,[415,420,422],{"class":421},"spNyl","const",[415,424,426],{"class":425},"sBMFI"," InfiniteData",[415,428,430],{"class":429},"sTEyZ","({\n",[415,432,434,437,440,443,445,448],{"class":417,"line":433},2,[415,435,436],{"class":421},"  required",[415,438,439],{"class":425}," List",[415,441,442],{"class":429},"\u003C",[415,444,363],{"class":425},[415,446,447],{"class":429},"> pages",[415,449,451],{"class":450},"sMK4o",",\n",[415,453,455,457,459,461,463,466],{"class":417,"line":454},3,[415,456,436],{"class":421},[415,458,439],{"class":425},[415,460,442],{"class":429},[415,462,371],{"class":425},[415,464,465],{"class":429},"> pageParams",[415,467,451],{"class":450},[415,469,471],{"class":417,"line":470},4,[415,472,473],{"class":429},"})\n",[356,475,476,477,399],{},"Asserts that ",[352,478,479],{},"pages.length == pageParams.length",[401,481,483],{"id":482},"properties","Properties",[485,486,487],"collapsible",{},[488,489,490,506],"table",{},[491,492,493],"thead",{},[494,495,496,500,503],"tr",{},[497,498,499],"th",{},"Property",[497,501,502],{},"Type",[497,504,505],{},"Description",[507,508,509,524,543,557,575],"tbody",{},[494,510,511,516,521],{},[512,513,514],"td",{},[352,515,386],{},[512,517,518],{},[352,519,520],{},"List\u003CTData>",[512,522,523],{},"All fetched pages in order: first page at index 0.",[494,525,526,530,535],{},[512,527,528],{},[352,529,390],{},[512,531,532],{},[352,533,534],{},"List\u003CTPageParam>",[512,536,537,538,540,541,380],{},"Parameters used to fetch each page (",[352,539,398],{}," → ",[352,542,394],{},[494,544,545,550,554],{},[512,546,547],{},[352,548,549],{},"pageCount",[512,551,552],{},[352,553,375],{},[512,555,556],{},"Total number of pages currently loaded.",[494,558,559,564,569],{},[512,560,561],{},[352,562,563],{},"isEmpty",[512,565,566],{},[352,567,568],{},"bool",[512,570,571,574],{},[352,572,573],{},"true"," when no pages have been loaded.",[494,576,577,582,586],{},[512,578,579],{},[352,580,581],{},"isNotEmpty",[512,583,584],{},[352,585,568],{},[512,587,588,590],{},[352,589,573],{}," when at least one page has been loaded.",[401,592,594],{"id":593},"methods","Methods",[596,597,599],"h4",{"id":598},"flatten",[352,600,598],{},[406,602,604],{"className":408,"code":603,"language":410,"meta":411,"style":411},"List\u003CTItem> flatten\u003CTItem>(Iterable\u003CTItem> Function(TData page) selector)\n",[352,605,606],{"__ignoreMap":411},[415,607,608,611,613,616,619,622,624,626,629,632,634,636,638,641,644,646],{"class":417,"line":418},[415,609,610],{"class":425},"List",[415,612,442],{"class":429},[415,614,615],{"class":425},"TItem",[415,617,618],{"class":429},"> ",[415,620,598],{"class":621},"s2Zo4",[415,623,442],{"class":429},[415,625,615],{"class":425},[415,627,628],{"class":429},">(",[415,630,631],{"class":425},"Iterable",[415,633,442],{"class":429},[415,635,615],{"class":425},[415,637,618],{"class":429},[415,639,640],{"class":425},"Function",[415,642,643],{"class":429},"(",[415,645,363],{"class":425},[415,647,648],{"class":429}," page) selector)\n",[356,650,651,652,399],{},"Flattens all pages into a single list: the canonical way to convert paginated data for ",[352,653,654],{},"ListView.builder",[406,656,658],{"className":408,"code":657,"language":410,"meta":411,"style":411},"// TData == List\u003CPost>\nfinal posts = data.flatten((page) => page);\n\n// TData is a response object with a nested list\nfinal posts = data.flatten((page) => page.items);\n",[352,659,660,666,696,702,707],{"__ignoreMap":411},[415,661,662],{"class":417,"line":418},[415,663,665],{"class":664},"sHwdD","// TData == List\u003CPost>\n",[415,667,668,671,674,677,680,682,684,687,690,693],{"class":417,"line":433},[415,669,670],{"class":421},"final",[415,672,673],{"class":429}," posts ",[415,675,676],{"class":450},"=",[415,678,679],{"class":429}," data",[415,681,399],{"class":450},[415,683,598],{"class":621},[415,685,686],{"class":429},"((page) ",[415,688,689],{"class":450},"=>",[415,691,692],{"class":429}," page)",[415,694,695],{"class":450},";\n",[415,697,698],{"class":417,"line":454},[415,699,701],{"emptyLinePlaceholder":700},true,"\n",[415,703,704],{"class":417,"line":470},[415,705,706],{"class":664},"// TData is a response object with a nested list\n",[415,708,710,712,714,716,718,720,722,724,726,729,731,734],{"class":417,"line":709},5,[415,711,670],{"class":421},[415,713,673],{"class":429},[415,715,676],{"class":450},[415,717,679],{"class":429},[415,719,399],{"class":450},[415,721,598],{"class":621},[415,723,686],{"class":429},[415,725,689],{"class":450},[415,727,728],{"class":429}," page",[415,730,399],{"class":450},[415,732,733],{"class":429},"items)",[415,735,695],{"class":450},[596,737,739],{"id":738},"append",[352,740,738],{},[406,742,744],{"className":408,"code":743,"language":410,"meta":411,"style":411},"InfiniteData\u003CTData, TPageParam> append(TData page, TPageParam param)\n",[352,745,746],{"__ignoreMap":411},[415,747,748,751,753,755,757,759,761,763,765,767,769,772,775],{"class":417,"line":418},[415,749,750],{"class":425},"InfiniteData",[415,752,442],{"class":429},[415,754,363],{"class":425},[415,756,376],{"class":429},[415,758,371],{"class":425},[415,760,618],{"class":429},[415,762,738],{"class":621},[415,764,643],{"class":429},[415,766,363],{"class":425},[415,768,728],{"class":429},[415,770,771],{"class":450},",",[415,773,774],{"class":425}," TPageParam",[415,776,777],{"class":429}," param)\n",[356,779,780,781,783,784,387,787,790,791,399],{},"Returns a new ",[352,782,750],{}," with ",[352,785,786],{},"page",[352,788,789],{},"param"," added at the end. Used internally by ",[352,792,793],{},"fetchNextPage",[596,795,797],{"id":796},"prepend",[352,798,796],{},[406,800,802],{"className":408,"code":801,"language":410,"meta":411,"style":411},"InfiniteData\u003CTData, TPageParam> prepend(TData page, TPageParam param)\n",[352,803,804],{"__ignoreMap":411},[415,805,806,808,810,812,814,816,818,820,822,824,826,828,830],{"class":417,"line":418},[415,807,750],{"class":425},[415,809,442],{"class":429},[415,811,363],{"class":425},[415,813,376],{"class":429},[415,815,371],{"class":425},[415,817,618],{"class":429},[415,819,796],{"class":621},[415,821,643],{"class":429},[415,823,363],{"class":425},[415,825,728],{"class":429},[415,827,771],{"class":450},[415,829,774],{"class":425},[415,831,777],{"class":429},[356,833,780,834,783,836,387,838,840,841,399],{},[352,835,750],{},[352,837,786],{},[352,839,789],{}," added at the front. Used internally by ",[352,842,843],{},"fetchPreviousPage",[596,845,847],{"id":846},"dropfirst",[352,848,849],{},"dropFirst",[406,851,853],{"className":408,"code":852,"language":410,"meta":411,"style":411},"InfiniteData\u003CTData, TPageParam> dropFirst()\n",[352,854,855],{"__ignoreMap":411},[415,856,857,859,861,863,865,867,869,871],{"class":417,"line":418},[415,858,750],{"class":425},[415,860,442],{"class":429},[415,862,363],{"class":425},[415,864,376],{"class":429},[415,866,371],{"class":425},[415,868,618],{"class":429},[415,870,849],{"class":621},[415,872,873],{"class":429},"()\n",[356,875,780,876,878,879,882,883,399],{},[352,877,750],{}," without its first page. Called during windowed paging when ",[352,880,881],{},"maxPages"," is exceeded after a ",[352,884,793],{},[596,886,888],{"id":887},"droplast",[352,889,890],{},"dropLast",[406,892,894],{"className":408,"code":893,"language":410,"meta":411,"style":411},"InfiniteData\u003CTData, TPageParam> dropLast()\n",[352,895,896],{"__ignoreMap":411},[415,897,898,900,902,904,906,908,910,912],{"class":417,"line":418},[415,899,750],{"class":425},[415,901,442],{"class":429},[415,903,363],{"class":425},[415,905,376],{"class":429},[415,907,371],{"class":425},[415,909,618],{"class":429},[415,911,890],{"class":621},[415,913,873],{"class":429},[356,915,780,916,918,919,882,921,399],{},[352,917,750],{}," without its last page. Called during windowed paging when ",[352,920,881],{},[352,922,843],{},[924,925],"hr",{},[348,927,929],{"id":928},"infinitequerystatetdata-tpageparam",[352,930,931],{},"InfiniteQueryState\u003CTData, TPageParam>",[356,933,934,935,938],{},"Sealed class state machine for an infinite query. Pattern-match exhaustively with ",[352,936,937],{},"switch",":",[406,940,942],{"className":408,"code":941,"language":410,"meta":411,"style":411},"switch (state) {\n  case InfiniteInitial() || InfiniteLoading():\n    return const CircularProgressIndicator();\n  case InfiniteSuccess(:final data, :final hasNextPage, :final isFetchingNextPage):\n    return PostFeed(\n      items: data.flatten((page) => page),\n      hasMore: hasNextPage,\n      loadingMore: isFetchingNextPage,\n    );\n  case InfiniteFailure(:final error, :final previousData):\n    if (previousData != null) {\n      return Column(children: [\n        PostFeed(items: previousData.flatten((p) => p)),\n        ErrorBanner(error),\n      ]);\n    }\n    return ErrorScreen(error);\n}\n",[352,943,944,952,975,990,1026,1036,1058,1070,1083,1091,1119,1137,1154,1182,1193,1201,1207,1219],{"__ignoreMap":411},[415,945,946,949],{"class":417,"line":418},[415,947,937],{"class":948},"s7zQu",[415,950,951],{"class":429}," (state) {\n",[415,953,954,957,960,963,966,969,972],{"class":417,"line":433},[415,955,956],{"class":948},"  case",[415,958,959],{"class":425}," InfiniteInitial",[415,961,962],{"class":429},"() ",[415,964,965],{"class":450},"||",[415,967,968],{"class":425}," InfiniteLoading",[415,970,971],{"class":429},"()",[415,973,974],{"class":450},":\n",[415,976,977,980,983,986,988],{"class":417,"line":454},[415,978,979],{"class":948},"    return",[415,981,982],{"class":421}," const",[415,984,985],{"class":425}," CircularProgressIndicator",[415,987,971],{"class":429},[415,989,695],{"class":450},[415,991,992,994,997,999,1001,1003,1005,1007,1010,1012,1015,1017,1019,1021,1024],{"class":417,"line":470},[415,993,956],{"class":948},[415,995,996],{"class":425}," InfiniteSuccess",[415,998,643],{"class":429},[415,1000,938],{"class":450},[415,1002,670],{"class":421},[415,1004,679],{"class":429},[415,1006,771],{"class":450},[415,1008,1009],{"class":450}," :",[415,1011,670],{"class":421},[415,1013,1014],{"class":429}," hasNextPage",[415,1016,771],{"class":450},[415,1018,1009],{"class":450},[415,1020,670],{"class":421},[415,1022,1023],{"class":429}," isFetchingNextPage)",[415,1025,974],{"class":450},[415,1027,1028,1030,1033],{"class":417,"line":709},[415,1029,979],{"class":948},[415,1031,1032],{"class":425}," PostFeed",[415,1034,1035],{"class":429},"(\n",[415,1037,1039,1042,1044,1046,1048,1050,1052,1054,1056],{"class":417,"line":1038},6,[415,1040,1041],{"class":429},"      items",[415,1043,938],{"class":450},[415,1045,679],{"class":429},[415,1047,399],{"class":450},[415,1049,598],{"class":621},[415,1051,686],{"class":429},[415,1053,689],{"class":450},[415,1055,692],{"class":429},[415,1057,451],{"class":450},[415,1059,1061,1064,1066,1068],{"class":417,"line":1060},7,[415,1062,1063],{"class":429},"      hasMore",[415,1065,938],{"class":450},[415,1067,1014],{"class":429},[415,1069,451],{"class":450},[415,1071,1073,1076,1078,1081],{"class":417,"line":1072},8,[415,1074,1075],{"class":429},"      loadingMore",[415,1077,938],{"class":450},[415,1079,1080],{"class":429}," isFetchingNextPage",[415,1082,451],{"class":450},[415,1084,1086,1089],{"class":417,"line":1085},9,[415,1087,1088],{"class":429},"    )",[415,1090,695],{"class":450},[415,1092,1094,1096,1099,1101,1103,1105,1108,1110,1112,1114,1117],{"class":417,"line":1093},10,[415,1095,956],{"class":948},[415,1097,1098],{"class":425}," InfiniteFailure",[415,1100,643],{"class":429},[415,1102,938],{"class":450},[415,1104,670],{"class":421},[415,1106,1107],{"class":429}," error",[415,1109,771],{"class":450},[415,1111,1009],{"class":450},[415,1113,670],{"class":421},[415,1115,1116],{"class":429}," previousData)",[415,1118,974],{"class":450},[415,1120,1122,1125,1128,1131,1134],{"class":417,"line":1121},11,[415,1123,1124],{"class":948},"    if",[415,1126,1127],{"class":429}," (previousData ",[415,1129,1130],{"class":450},"!=",[415,1132,1133],{"class":450}," null",[415,1135,1136],{"class":429},") {\n",[415,1138,1140,1143,1146,1149,1151],{"class":417,"line":1139},12,[415,1141,1142],{"class":948},"      return",[415,1144,1145],{"class":425}," Column",[415,1147,1148],{"class":429},"(children",[415,1150,938],{"class":450},[415,1152,1153],{"class":429}," [\n",[415,1155,1157,1160,1163,1165,1168,1170,1172,1175,1177,1180],{"class":417,"line":1156},13,[415,1158,1159],{"class":425},"        PostFeed",[415,1161,1162],{"class":429},"(items",[415,1164,938],{"class":450},[415,1166,1167],{"class":429}," previousData",[415,1169,399],{"class":450},[415,1171,598],{"class":621},[415,1173,1174],{"class":429},"((p) ",[415,1176,689],{"class":450},[415,1178,1179],{"class":429}," p))",[415,1181,451],{"class":450},[415,1183,1185,1188,1191],{"class":417,"line":1184},14,[415,1186,1187],{"class":425},"        ErrorBanner",[415,1189,1190],{"class":429},"(error)",[415,1192,451],{"class":450},[415,1194,1196,1199],{"class":417,"line":1195},15,[415,1197,1198],{"class":429},"      ])",[415,1200,695],{"class":450},[415,1202,1204],{"class":417,"line":1203},16,[415,1205,1206],{"class":429},"    }\n",[415,1208,1210,1212,1215,1217],{"class":417,"line":1209},17,[415,1211,979],{"class":948},[415,1213,1214],{"class":425}," ErrorScreen",[415,1216,1190],{"class":429},[415,1218,695],{"class":450},[415,1220,1222],{"class":417,"line":1221},18,[415,1223,1224],{"class":429},"}\n",[401,1226,1228],{"id":1227},"infiniteinitial",[352,1229,1230],{},"InfiniteInitial",[406,1232,1234],{"className":408,"code":1233,"language":410,"meta":411,"style":411},"final class InfiniteInitial\u003CTData, TPageParam> extends InfiniteQueryState\u003CTData, TPageParam>\n",[352,1235,1236],{"__ignoreMap":411},[415,1237,1238,1240,1243,1245,1247,1249,1251,1253,1255,1258,1261,1263,1265,1267,1269],{"class":417,"line":418},[415,1239,670],{"class":421},[415,1241,1242],{"class":450}," class",[415,1244,959],{"class":425},[415,1246,442],{"class":429},[415,1248,363],{"class":425},[415,1250,376],{"class":429},[415,1252,371],{"class":425},[415,1254,618],{"class":429},[415,1256,1257],{"class":450},"extends",[415,1259,1260],{"class":425}," InfiniteQueryState",[415,1262,442],{"class":429},[415,1264,363],{"class":425},[415,1266,376],{"class":429},[415,1268,371],{"class":425},[415,1270,1271],{"class":429},">\n",[356,1273,1274],{},"The query has not been executed yet. This is the default state when no fetch has been triggered.",[924,1276],{},[401,1278,1280],{"id":1279},"infiniteloading",[352,1281,1282],{},"InfiniteLoading",[406,1284,1286],{"className":408,"code":1285,"language":410,"meta":411,"style":411},"final class InfiniteLoading\u003CTData, TPageParam> extends InfiniteQueryState\u003CTData, TPageParam>\n",[352,1287,1288],{"__ignoreMap":411},[415,1289,1290,1292,1294,1296,1298,1300,1302,1304,1306,1308,1310,1312,1314,1316,1318],{"class":417,"line":418},[415,1291,670],{"class":421},[415,1293,1242],{"class":450},[415,1295,968],{"class":425},[415,1297,442],{"class":429},[415,1299,363],{"class":425},[415,1301,376],{"class":429},[415,1303,371],{"class":425},[415,1305,618],{"class":429},[415,1307,1257],{"class":450},[415,1309,1260],{"class":425},[415,1311,442],{"class":429},[415,1313,363],{"class":425},[415,1315,376],{"class":429},[415,1317,371],{"class":425},[415,1319,1271],{"class":429},[356,1321,1322,1323,1327],{},"The ",[1324,1325,1326],"strong",{},"initial"," page fetch is in progress. No pages have been loaded yet.",[356,1329,1330,1331,1333,1334,1337,1338,1341,1342,1345],{},"After the first page is loaded, the state never returns to ",[352,1332,1282],{},". Subsequent page fetches signal progress via ",[352,1335,1336],{},"isFetchingNextPage"," / ",[352,1339,1340],{},"isFetchingPreviousPage"," on ",[352,1343,1344],{},"InfiniteSuccess",", keeping existing pages visible.",[924,1347],{},[401,1349,1351],{"id":1350},"infinitesuccess",[352,1352,1344],{},[406,1354,1356],{"className":408,"code":1355,"language":410,"meta":411,"style":411},"final class InfiniteSuccess\u003CTData, TPageParam> extends InfiniteQueryState\u003CTData, TPageParam>\n",[352,1357,1358],{"__ignoreMap":411},[415,1359,1360,1362,1364,1366,1368,1370,1372,1374,1376,1378,1380,1382,1384,1386,1388],{"class":417,"line":418},[415,1361,670],{"class":421},[415,1363,1242],{"class":450},[415,1365,996],{"class":425},[415,1367,442],{"class":429},[415,1369,363],{"class":425},[415,1371,376],{"class":429},[415,1373,371],{"class":425},[415,1375,618],{"class":429},[415,1377,1257],{"class":450},[415,1379,1260],{"class":425},[415,1381,442],{"class":429},[415,1383,363],{"class":425},[415,1385,376],{"class":429},[415,1387,371],{"class":425},[415,1389,1271],{"class":429},[356,1391,1392],{},"All currently loaded pages, with pagination status flags.",[596,1394,483],{"id":1395},"properties-1",[488,1397,1398,1408],{},[491,1399,1400],{},[494,1401,1402,1404,1406],{},[497,1403,499],{},[497,1405,502],{},[497,1407,505],{},[507,1409,1410,1424,1444,1469,1484,1502],{},[494,1411,1412,1417,1421],{},[512,1413,1414],{},[352,1415,1416],{},"data",[512,1418,1419],{},[352,1420,354],{},[512,1422,1423],{},"All loaded pages and their page parameters.",[494,1425,1426,1431,1435],{},[512,1427,1428],{},[352,1429,1430],{},"hasNextPage",[512,1432,1433],{},[352,1434,568],{},[512,1436,1437,1439,1440,1443],{},[352,1438,573],{}," when ",[352,1441,1442],{},"getNextPageParam"," returns non-null for the last page.",[494,1445,1446,1451,1455],{},[512,1447,1448],{},[352,1449,1450],{},"hasPreviousPage",[512,1452,1453],{},[352,1454,568],{},[512,1456,1457,1439,1459,1462,1463,1466,1467,399],{},[352,1458,573],{},[352,1460,1461],{},"getPreviousPageParam"," returns non-null for the first page. Always ",[352,1464,1465],{},"false"," if no ",[352,1468,1461],{},[494,1470,1471,1476,1481],{},[512,1472,1473],{},[352,1474,1475],{},"updatedAt",[512,1477,1478],{},[352,1479,1480],{},"DateTime",[512,1482,1483],{},"When this state was last successfully updated.",[494,1485,1486,1490,1494],{},[512,1487,1488],{},[352,1489,1336],{},[512,1491,1492],{},[352,1493,568],{},[512,1495,1496,1498,1499,1501],{},[352,1497,573],{}," while a next-page fetch is in progress. Show a bottom loading indicator; ",[352,1500,1416],{}," is still valid.",[494,1503,1504,1508,1512],{},[512,1505,1506],{},[352,1507,1340],{},[512,1509,1510],{},[352,1511,568],{},[512,1513,1514,1516,1517,1501],{},[352,1515,573],{}," while a previous-page fetch is in progress. Show a top loading indicator; ",[352,1518,1416],{},[596,1520,1522],{"id":1521},"copywith",[352,1523,1524],{},"copyWith",[406,1526,1528],{"className":408,"code":1527,"language":410,"meta":411,"style":411},"InfiniteSuccess\u003CTData, TPageParam> copyWith({\n  InfiniteData\u003CTData, TPageParam>? data,\n  bool? isFetchingNextPage,\n  bool? isFetchingPreviousPage,\n  bool? hasNextPage,\n  bool? hasPreviousPage,\n  DateTime? updatedAt,\n})\n",[352,1529,1530,1548,1571,1582,1593,1603,1614,1626],{"__ignoreMap":411},[415,1531,1532,1534,1536,1538,1540,1542,1544,1546],{"class":417,"line":418},[415,1533,1344],{"class":425},[415,1535,442],{"class":429},[415,1537,363],{"class":425},[415,1539,376],{"class":429},[415,1541,371],{"class":425},[415,1543,618],{"class":429},[415,1545,1524],{"class":621},[415,1547,430],{"class":429},[415,1549,1550,1553,1555,1557,1559,1561,1564,1567,1569],{"class":417,"line":433},[415,1551,1552],{"class":425},"  InfiniteData",[415,1554,442],{"class":429},[415,1556,363],{"class":425},[415,1558,376],{"class":429},[415,1560,371],{"class":425},[415,1562,1563],{"class":429},">",[415,1565,1566],{"class":450},"?",[415,1568,679],{"class":429},[415,1570,451],{"class":450},[415,1572,1573,1576,1578,1580],{"class":417,"line":454},[415,1574,1575],{"class":425},"  bool",[415,1577,1566],{"class":450},[415,1579,1080],{"class":429},[415,1581,451],{"class":450},[415,1583,1584,1586,1588,1591],{"class":417,"line":470},[415,1585,1575],{"class":425},[415,1587,1566],{"class":450},[415,1589,1590],{"class":429}," isFetchingPreviousPage",[415,1592,451],{"class":450},[415,1594,1595,1597,1599,1601],{"class":417,"line":709},[415,1596,1575],{"class":425},[415,1598,1566],{"class":450},[415,1600,1014],{"class":429},[415,1602,451],{"class":450},[415,1604,1605,1607,1609,1612],{"class":417,"line":1038},[415,1606,1575],{"class":425},[415,1608,1566],{"class":450},[415,1610,1611],{"class":429}," hasPreviousPage",[415,1613,451],{"class":450},[415,1615,1616,1619,1621,1624],{"class":417,"line":1060},[415,1617,1618],{"class":425},"  DateTime",[415,1620,1566],{"class":450},[415,1622,1623],{"class":429}," updatedAt",[415,1625,451],{"class":450},[415,1627,1628],{"class":417,"line":1072},[415,1629,473],{"class":429},[356,1631,1632],{},"Returns a copy with the specified fields overridden. Unspecified fields retain their current values.",[924,1634],{},[401,1636,1638],{"id":1637},"infinitefailure",[352,1639,1640],{},"InfiniteFailure",[406,1642,1644],{"className":408,"code":1643,"language":410,"meta":411,"style":411},"final class InfiniteFailure\u003CTData, TPageParam> extends InfiniteQueryState\u003CTData, TPageParam>\n",[352,1645,1646],{"__ignoreMap":411},[415,1647,1648,1650,1652,1654,1656,1658,1660,1662,1664,1666,1668,1670,1672,1674,1676],{"class":417,"line":418},[415,1649,670],{"class":421},[415,1651,1242],{"class":450},[415,1653,1098],{"class":425},[415,1655,442],{"class":429},[415,1657,363],{"class":425},[415,1659,376],{"class":429},[415,1661,371],{"class":425},[415,1663,618],{"class":429},[415,1665,1257],{"class":450},[415,1667,1260],{"class":425},[415,1669,442],{"class":429},[415,1671,363],{"class":425},[415,1673,376],{"class":429},[415,1675,371],{"class":425},[415,1677,1271],{"class":429},[356,1679,1680,1681,1684],{},"A fetch failure, with optional ",[352,1682,1683],{},"previousData"," for graceful degradation.",[596,1686,483],{"id":1687},"properties-2",[488,1689,1690,1700],{},[491,1691,1692],{},[494,1693,1694,1696,1698],{},[497,1695,499],{},[497,1697,502],{},[497,1699,505],{},[507,1701,1702,1717,1732],{},[494,1703,1704,1709,1714],{},[512,1705,1706],{},[352,1707,1708],{},"error",[512,1710,1711],{},[352,1712,1713],{},"Object",[512,1715,1716],{},"The error thrown by the fetch function (after all retries).",[494,1718,1719,1724,1729],{},[512,1720,1721],{},[352,1722,1723],{},"stackTrace",[512,1725,1726],{},[352,1727,1728],{},"StackTrace?",[512,1730,1731],{},"Optional stack trace.",[494,1733,1734,1738,1743],{},[512,1735,1736],{},[352,1737,1683],{},[512,1739,1740],{},[352,1741,1742],{},"InfiniteData\u003CTData, TPageParam>?",[512,1744,1745],{},"Last successfully loaded pages, if any. Non-null when failure occurs after pages have already been loaded.",[356,1747,1748,1749,1751],{},"When ",[352,1750,1683],{}," is non-null, show existing content alongside an error indicator rather than replacing the entire view.",[924,1753],{},[348,1755,1757],{"id":1756},"infinitequeryoptionstdata-tpageparam",[352,1758,1759],{},"InfiniteQueryOptions\u003CTData, TPageParam>",[356,1761,1762,1763,1765],{},"Configuration for an infinite query. Combines standard ",[352,1764,215],{}," with pagination-specific parameters.",[401,1767,404],{"id":1768},"constructor-1",[406,1770,1772],{"className":408,"code":1771,"language":410,"meta":411,"style":411},"const InfiniteQueryOptions({\n  required TPageParam initialPageParam,\n  required TPageParam? Function(TData lastPage, List\u003CTData> allPages) getNextPageParam,\n  TPageParam? Function(TData firstPage, List\u003CTData> allPages)? getPreviousPageParam,\n  int? maxPages,\n  QoraOptions baseOptions = const QoraOptions(),\n})\n",[352,1773,1774,1783,1794,1825,1859,1871,1890],{"__ignoreMap":411},[415,1775,1776,1778,1781],{"class":417,"line":418},[415,1777,422],{"class":421},[415,1779,1780],{"class":425}," InfiniteQueryOptions",[415,1782,430],{"class":429},[415,1784,1785,1787,1789,1792],{"class":417,"line":433},[415,1786,436],{"class":421},[415,1788,774],{"class":425},[415,1790,1791],{"class":429}," initialPageParam",[415,1793,451],{"class":450},[415,1795,1796,1798,1800,1802,1805,1807,1809,1812,1814,1816,1818,1820,1823],{"class":417,"line":454},[415,1797,436],{"class":421},[415,1799,774],{"class":425},[415,1801,1566],{"class":450},[415,1803,1804],{"class":425}," Function",[415,1806,643],{"class":429},[415,1808,363],{"class":425},[415,1810,1811],{"class":429}," lastPage",[415,1813,771],{"class":450},[415,1815,439],{"class":425},[415,1817,442],{"class":429},[415,1819,363],{"class":425},[415,1821,1822],{"class":429},"> allPages) getNextPageParam",[415,1824,451],{"class":450},[415,1826,1827,1830,1832,1834,1836,1838,1841,1843,1845,1847,1849,1852,1854,1857],{"class":417,"line":470},[415,1828,1829],{"class":425},"  TPageParam",[415,1831,1566],{"class":450},[415,1833,1804],{"class":425},[415,1835,643],{"class":429},[415,1837,363],{"class":425},[415,1839,1840],{"class":429}," firstPage",[415,1842,771],{"class":450},[415,1844,439],{"class":425},[415,1846,442],{"class":429},[415,1848,363],{"class":425},[415,1850,1851],{"class":429},"> allPages)",[415,1853,1566],{"class":450},[415,1855,1856],{"class":429}," getPreviousPageParam",[415,1858,451],{"class":450},[415,1860,1861,1864,1866,1869],{"class":417,"line":709},[415,1862,1863],{"class":425},"  int",[415,1865,1566],{"class":450},[415,1867,1868],{"class":429}," maxPages",[415,1870,451],{"class":450},[415,1872,1873,1876,1879,1881,1883,1886,1888],{"class":417,"line":1038},[415,1874,1875],{"class":425},"  QoraOptions",[415,1877,1878],{"class":429}," baseOptions ",[415,1880,676],{"class":450},[415,1882,982],{"class":421},[415,1884,1885],{"class":425}," QoraOptions",[415,1887,971],{"class":429},[415,1889,451],{"class":450},[415,1891,1892],{"class":417,"line":1060},[415,1893,473],{"class":429},[356,1895,1896,1897,399],{},"Asserts ",[352,1898,1899],{},"maxPages == null || maxPages >= 1",[401,1901,483],{"id":1902},"properties-3",[488,1904,1905,1918],{},[491,1906,1907],{},[494,1908,1909,1911,1913,1916],{},[497,1910,499],{},[497,1912,502],{},[497,1914,1915],{},"Required",[497,1917,505],{},[507,1919,1920,1950,1974,1997,2022],{},[494,1921,1922,1927,1931,1934],{},[512,1923,1924],{},[352,1925,1926],{},"initialPageParam",[512,1928,1929],{},[352,1930,371],{},[512,1932,1933],{},"Yes",[512,1935,1936,1937,376,1940,376,1943,1946,1947,380],{},"Parameter for the very first page (e.g. ",[352,1938,1939],{},"1",[352,1941,1942],{},"0",[352,1944,1945],{},"null",", or ",[352,1948,1949],{},"''",[494,1951,1952,1956,1961,1963],{},[512,1953,1954],{},[352,1955,1442],{},[512,1957,1958],{},[352,1959,1960],{},"TPageParam? Function(TData lastPage, List\u003CTData> allPages)",[512,1962,1933],{},[512,1964,1965,1966,1968,1969,1971,1972,380],{},"Returns the next page's parameter, or ",[352,1967,1945],{}," when no forward pages remain (sets ",[352,1970,1430],{}," to ",[352,1973,1465],{},[494,1975,1976,1980,1985,1987],{},[512,1977,1978],{},[352,1979,1461],{},[512,1981,1982],{},[352,1983,1984],{},"TPageParam? Function(TData firstPage, List\u003CTData> allPages)?",[512,1986,938],{},[512,1988,1989,1990,376,1992,1994,1995,399],{},"Returns the previous page's parameter. Only needed for bi-directional scroll. When ",[352,1991,1945],{},[352,1993,1450],{}," is always ",[352,1996,1465],{},[494,1998,1999,2003,2008,2010],{},[512,2000,2001],{},[352,2002,881],{},[512,2004,2005],{},[352,2006,2007],{},"int?",[512,2009,938],{},[512,2011,2012,2013,2015,2016,2018,2019,399],{},"Maximum pages kept in memory. When exceeded, the oldest page is dropped on ",[352,2014,793],{}," (or newest on ",[352,2017,843],{},"). Must be ",[352,2020,2021],{},">= 1",[494,2023,2024,2029,2033,2035],{},[512,2025,2026],{},[352,2027,2028],{},"baseOptions",[512,2030,2031],{},[352,2032,215],{},[512,2034,938],{},[512,2036,2037,2038,399],{},"Standard retry, stale time, cache time, and network mode options applied to every page fetch. Merged on top of ",[352,2039,2040],{},"QoraClientConfig.defaultOptions",[924,2042],{},[348,2044,2046],{"id":2045},"infinitequeryobservertdata-tpageparam",[352,2047,2048],{},"InfiniteQueryObserver\u003CTData, TPageParam>",[356,2050,2051],{},"The central pagination engine. Manages the full lifecycle of a single infinite query: fetching pages, emitting state transitions, and respecting concurrency guards.",[356,2053,2054,2055,2058,2059,2062,2063,2065],{},"Typically created inside a Flutter widget's ",[352,2056,2057],{},"State.initState"," and disposed in ",[352,2060,2061],{},"State.dispose",". For a ready-made Flutter binding, use ",[352,2064,118],{}," instead.",[356,2067,2068,2069,2072,2073,2076],{},"Multiple observers sharing the same ",[352,2070,2071],{},"key"," on the same ",[352,2074,2075],{},"client"," share the same underlying cache entry, so all listeners receive the same state transitions in sync.",[401,2078,404],{"id":2079},"constructor-2",[406,2081,2083],{"className":408,"code":2082,"language":410,"meta":411,"style":411},"InfiniteQueryObserver({\n  required QoraClient client,\n  required Object key,\n  required InfiniteQueryFunction\u003CTData, TPageParam> fetcher,\n  required InfiniteQueryOptions\u003CTData, TPageParam> options,\n})\n",[352,2084,2085,2092,2104,2116,2136,2155],{"__ignoreMap":411},[415,2086,2087,2090],{"class":417,"line":418},[415,2088,2089],{"class":425},"InfiniteQueryObserver",[415,2091,430],{"class":429},[415,2093,2094,2096,2099,2102],{"class":417,"line":433},[415,2095,436],{"class":421},[415,2097,2098],{"class":425}," QoraClient",[415,2100,2101],{"class":429}," client",[415,2103,451],{"class":450},[415,2105,2106,2108,2111,2114],{"class":417,"line":454},[415,2107,436],{"class":421},[415,2109,2110],{"class":425}," Object",[415,2112,2113],{"class":429}," key",[415,2115,451],{"class":450},[415,2117,2118,2120,2123,2125,2127,2129,2131,2134],{"class":417,"line":470},[415,2119,436],{"class":421},[415,2121,2122],{"class":425}," InfiniteQueryFunction",[415,2124,442],{"class":429},[415,2126,363],{"class":425},[415,2128,376],{"class":429},[415,2130,371],{"class":425},[415,2132,2133],{"class":429},"> fetcher",[415,2135,451],{"class":450},[415,2137,2138,2140,2142,2144,2146,2148,2150,2153],{"class":417,"line":709},[415,2139,436],{"class":421},[415,2141,1780],{"class":425},[415,2143,442],{"class":429},[415,2145,363],{"class":425},[415,2147,376],{"class":429},[415,2149,371],{"class":425},[415,2151,2152],{"class":429},"> options",[415,2154,451],{"class":450},[415,2156,2157],{"class":417,"line":1038},[415,2158,473],{"class":429},[401,2160,483],{"id":2161},"properties-4",[488,2163,2164,2174],{},[491,2165,2166],{},[494,2167,2168,2170,2172],{},[497,2169,499],{},[497,2171,502],{},[497,2173,505],{},[507,2175,2176,2191],{},[494,2177,2178,2183,2188],{},[512,2179,2180],{},[352,2181,2182],{},"stream",[512,2184,2185],{},[352,2186,2187],{},"Stream\u003CInfiniteQueryState\u003CTData, TPageParam>>",[512,2189,2190],{},"Emits the current state immediately, then all future transitions.",[494,2192,2193,2198,2202],{},[512,2194,2195],{},[352,2196,2197],{},"state",[512,2199,2200],{},[352,2201,931],{},[512,2203,2204],{},"Synchronous snapshot of the current state.",[401,2206,594],{"id":2207},"methods-1",[596,2209,2211],{"id":2210},"fetch",[352,2212,2210],{},[406,2214,2216],{"className":408,"code":2215,"language":410,"meta":411,"style":411},"Future\u003Cvoid> fetch()\n",[352,2217,2218],{"__ignoreMap":411},[415,2219,2220,2223,2225,2228,2230,2232],{"class":417,"line":418},[415,2221,2222],{"class":425},"Future",[415,2224,442],{"class":429},[415,2226,2227],{"class":421},"void",[415,2229,618],{"class":429},[415,2231,2210],{"class":621},[415,2233,873],{"class":429},[356,2235,2236],{},"Fetch the first page. No-op when:",[2238,2239,2240,2246],"ul",{},[2241,2242,2243,2244,380],"li",{},"Data is already loaded (state is not ",[352,2245,1230],{},[2241,2247,2248],{},"An initial fetch is already in progress.",[356,2250,2251,2252,540,2254,540,2256,2258,2259,399],{},"Transitions: ",[352,2253,1230],{},[352,2255,1282],{},[352,2257,1344],{}," | ",[352,2260,1640],{},[924,2262],{},[596,2264,2266],{"id":2265},"fetchnextpage",[352,2267,793],{},[406,2269,2271],{"className":408,"code":2270,"language":410,"meta":411,"style":411},"Future\u003Cvoid> fetchNextPage()\n",[352,2272,2273],{"__ignoreMap":411},[415,2274,2275,2277,2279,2281,2283,2285],{"class":417,"line":418},[415,2276,2222],{"class":425},[415,2278,442],{"class":429},[415,2280,2227],{"class":421},[415,2282,618],{"class":429},[415,2284,793],{"class":621},[415,2286,873],{"class":429},[356,2288,2289],{},"Fetch the next page and append it. No-op when:",[2238,2291,2292,2298,2305],{},[2241,2293,2294,2295,2297],{},"No data has been loaded yet (call ",[352,2296,2210],{}," first).",[2241,2299,2300,2302,2303,399],{},[352,2301,1430],{}," is ",[352,2304,1465],{},[2241,2306,2307],{},"A next-page or previous-page fetch is already in progress.",[356,2309,2310,2311,2314,2315,2317,2318,783,2320,2322],{},"While fetching, sets ",[352,2312,2313],{},"isFetchingNextPage: true"," on the current ",[352,2316,1344],{},": existing pages stay visible. On failure, transitions to ",[352,2319,1640],{},[352,2321,1683],{}," populated.",[924,2324],{},[596,2326,2328],{"id":2327},"fetchpreviouspage",[352,2329,843],{},[406,2331,2333],{"className":408,"code":2332,"language":410,"meta":411,"style":411},"Future\u003Cvoid> fetchPreviousPage()\n",[352,2334,2335],{"__ignoreMap":411},[415,2336,2337,2339,2341,2343,2345,2347],{"class":417,"line":418},[415,2338,2222],{"class":425},[415,2340,442],{"class":429},[415,2342,2227],{"class":421},[415,2344,618],{"class":429},[415,2346,843],{"class":621},[415,2348,873],{"class":429},[356,2350,2351],{},"Fetch the previous page and prepend it. No-op when:",[2238,2353,2354,2359,2365],{},[2241,2355,2356,2358],{},[352,2357,1461],{}," is not configured.",[2241,2360,2361,2302,2363,399],{},[352,2362,1450],{},[352,2364,1465],{},[2241,2366,2367],{},"A fetch is already in progress.",[356,2369,2310,2370,2373,2374,783,2376,399],{},[352,2371,2372],{},"isFetchingPreviousPage: true",". On failure, transitions to ",[352,2375,1640],{},[352,2377,1683],{},[924,2379],{},[596,2381,2383],{"id":2382},"refetch",[352,2384,2382],{},[406,2386,2388],{"className":408,"code":2387,"language":410,"meta":411,"style":411},"Future\u003Cvoid> refetch()\n",[352,2389,2390],{"__ignoreMap":411},[415,2391,2392,2394,2396,2398,2400,2402],{"class":417,"line":418},[415,2393,2222],{"class":425},[415,2395,442],{"class":429},[415,2397,2227],{"class":421},[415,2399,618],{"class":429},[415,2401,2382],{"class":621},[415,2403,873],{"class":429},[356,2405,2406,2407,2409,2410,2412,2413,2416],{},"Re-fetch all currently loaded pages in sequence, preserving the page count. Uses the original ",[352,2408,390],{}," stored in ",[352,2411,750],{},". Useful after ",[352,2414,2415],{},"client.invalidateInfiniteQuery(key)"," or pull-to-refresh.",[2238,2418,2419,2425,2432],{},[2241,2420,2421,2422,399],{},"If no data is loaded, delegates to ",[352,2423,2424],{},"fetch()",[2241,2426,2427,2428,2314,2430,399],{},"Signals progress via ",[352,2429,2313],{},[352,2431,1344],{},[2241,2433,2434,2435,783,2437,399],{},"On failure, transitions to ",[352,2436,1640],{},[352,2438,1683],{},[924,2440],{},[596,2442,2444],{"id":2443},"dispose",[352,2445,2443],{},[406,2447,2449],{"className":408,"code":2448,"language":410,"meta":411,"style":411},"void dispose()\n",[352,2450,2451],{"__ignoreMap":411},[415,2452,2453,2455,2458],{"class":417,"line":418},[415,2454,2227],{"class":421},[415,2456,2457],{"class":621}," dispose",[415,2459,873],{"class":429},[356,2461,2462,2463,2466],{},"Releases this observer. After disposal, all further method calls are silently ignored. The underlying cache entry is ",[1324,2464,2465],{},"not removed",": other observers sharing the same key continue operating normally.",[924,2468],{},[401,2470,2472],{"id":2471},"concurrency-guarantees","Concurrency Guarantees",[356,2474,2475,2476,376,2479,376,2482,376,2485,2488,2489,2492,2493,2496],{},"All guards (",[352,2477,2478],{},"_isFetchingInitial",[352,2480,2481],{},"_isFetchingNext",[352,2483,2484],{},"_isFetchingPrevious",[352,2486,2487],{},"_isRefetching",") are set as the ",[1324,2490,2491],{},"first synchronous statement"," in their method: before any ",[352,2494,2495],{},"await",". This prevents race conditions from rapid scroll events or UI interactions even before the first network round-trip begins.",[924,2498],{},[348,2500,2502],{"id":2501},"infinitequerybuildertdata-tpageparam",[352,2503,2504],{},"InfiniteQueryBuilder\u003CTData, TPageParam>",[356,2506,2507,2508,2513],{},"Flutter widget that binds an infinite query to the widget tree. See the ",[2509,2510,2512],"a",{"href":2511},"../flutter-integration/infinite-query-builder","InfiniteQueryBuilder guide"," for usage examples.",[401,2515,404],{"id":2516},"constructor-3",[406,2518,2520],{"className":408,"code":2519,"language":410,"meta":411,"style":411},"const InfiniteQueryBuilder({\n  Key? key,\n  required Object queryKey,\n  required InfiniteQueryFunction\u003CTData, TPageParam> fetcher,\n  required InfiniteQueryOptions\u003CTData, TPageParam> options,\n  required Widget Function(\n    BuildContext context,\n    InfiniteQueryState\u003CTData, TPageParam> state,\n    InfiniteQueryController\u003CTData, TPageParam> controller,\n  ) builder,\n  QoraClient? client,\n  bool enabled = true,\n})\n",[352,2521,2522,2531,2542,2553,2571,2589,2600,2610,2628,2646,2653,2664,2676],{"__ignoreMap":411},[415,2523,2524,2526,2529],{"class":417,"line":418},[415,2525,422],{"class":421},[415,2527,2528],{"class":425}," InfiniteQueryBuilder",[415,2530,430],{"class":429},[415,2532,2533,2536,2538,2540],{"class":417,"line":433},[415,2534,2535],{"class":425},"  Key",[415,2537,1566],{"class":450},[415,2539,2113],{"class":429},[415,2541,451],{"class":450},[415,2543,2544,2546,2548,2551],{"class":417,"line":454},[415,2545,436],{"class":421},[415,2547,2110],{"class":425},[415,2549,2550],{"class":429}," queryKey",[415,2552,451],{"class":450},[415,2554,2555,2557,2559,2561,2563,2565,2567,2569],{"class":417,"line":470},[415,2556,436],{"class":421},[415,2558,2122],{"class":425},[415,2560,442],{"class":429},[415,2562,363],{"class":425},[415,2564,376],{"class":429},[415,2566,371],{"class":425},[415,2568,2133],{"class":429},[415,2570,451],{"class":450},[415,2572,2573,2575,2577,2579,2581,2583,2585,2587],{"class":417,"line":709},[415,2574,436],{"class":421},[415,2576,1780],{"class":425},[415,2578,442],{"class":429},[415,2580,363],{"class":425},[415,2582,376],{"class":429},[415,2584,371],{"class":425},[415,2586,2152],{"class":429},[415,2588,451],{"class":450},[415,2590,2591,2593,2596,2598],{"class":417,"line":1038},[415,2592,436],{"class":421},[415,2594,2595],{"class":425}," Widget",[415,2597,1804],{"class":425},[415,2599,1035],{"class":429},[415,2601,2602,2605,2608],{"class":417,"line":1060},[415,2603,2604],{"class":425},"    BuildContext",[415,2606,2607],{"class":429}," context",[415,2609,451],{"class":450},[415,2611,2612,2615,2617,2619,2621,2623,2626],{"class":417,"line":1072},[415,2613,2614],{"class":425},"    InfiniteQueryState",[415,2616,442],{"class":429},[415,2618,363],{"class":425},[415,2620,376],{"class":429},[415,2622,371],{"class":425},[415,2624,2625],{"class":429},"> state",[415,2627,451],{"class":450},[415,2629,2630,2633,2635,2637,2639,2641,2644],{"class":417,"line":1085},[415,2631,2632],{"class":425},"    InfiniteQueryController",[415,2634,442],{"class":429},[415,2636,363],{"class":425},[415,2638,376],{"class":429},[415,2640,371],{"class":425},[415,2642,2643],{"class":429},"> controller",[415,2645,451],{"class":450},[415,2647,2648,2651],{"class":417,"line":1093},[415,2649,2650],{"class":429},"  ) builder",[415,2652,451],{"class":450},[415,2654,2655,2658,2660,2662],{"class":417,"line":1121},[415,2656,2657],{"class":425},"  QoraClient",[415,2659,1566],{"class":450},[415,2661,2101],{"class":429},[415,2663,451],{"class":450},[415,2665,2666,2668,2671,2673],{"class":417,"line":1139},[415,2667,1575],{"class":425},[415,2669,2670],{"class":429}," enabled ",[415,2672,676],{"class":450},[415,2674,2675],{"class":450}," true,\n",[415,2677,2678],{"class":417,"line":1156},[415,2679,473],{"class":429},[401,2681,2683],{"id":2682},"props","Props",[488,2685,2686,2700],{},[491,2687,2688],{},[494,2689,2690,2693,2695,2698],{},[497,2691,2692],{},"Prop",[497,2694,502],{},[497,2696,2697],{},"Default",[497,2699,505],{},[507,2701,2702,2728,2748,2764,2781,2805],{},[494,2703,2704,2709,2720,2723],{},[512,2705,2706],{},[352,2707,2708],{},"queryKey",[512,2710,2711,2713,2714,2716,2717,2719],{},[352,2712,1713],{}," (",[352,2715,610],{}," or ",[352,2718,207],{},")",[512,2721,2722],{},"required",[512,2724,2725,2726,399],{},"Cache key. Changing it disposes the current observer and starts fresh from ",[352,2727,1926],{},[494,2729,2730,2735,2740,2742],{},[512,2731,2732],{},[352,2733,2734],{},"fetcher",[512,2736,2737],{},[352,2738,2739],{},"InfiniteQueryFunction\u003CTData, TPageParam>",[512,2741,2722],{},[512,2743,2744,2747],{},[352,2745,2746],{},"Future\u003CTData> Function(TPageParam pageParam)",": fetches a single page.",[494,2749,2750,2755,2759,2761],{},[512,2751,2752],{},[352,2753,2754],{},"options",[512,2756,2757],{},[352,2758,1759],{},[512,2760,2722],{},[512,2762,2763],{},"Pagination configuration.",[494,2765,2766,2771,2776,2778],{},[512,2767,2768],{},[352,2769,2770],{},"builder",[512,2772,2773],{},[352,2774,2775],{},"Widget Function(BuildContext, InfiniteQueryState, InfiniteQueryController)",[512,2777,2722],{},[512,2779,2780],{},"Builds the widget tree from state and controller.",[494,2782,2783,2787,2792,2796],{},[512,2784,2785],{},[352,2786,2075],{},[512,2788,2789],{},[352,2790,2791],{},"QoraClient?",[512,2793,2794],{},[352,2795,1945],{},[512,2797,2798,2799,2801,2802,2804],{},"Override the ",[352,2800,202],{}," from ",[352,2803,103],{},". Useful for testing.",[494,2806,2807,2812,2816,2820],{},[512,2808,2809],{},[352,2810,2811],{},"enabled",[512,2813,2814],{},[352,2815,568],{},[512,2817,2818],{},[352,2819,573],{},[512,2821,1748,2822,2824],{},[352,2823,1465],{},", the first-page fetch is suppressed. The widget still observes the current cached state.",[924,2826],{},[348,2828,2830],{"id":2829},"infinitequerycontrollertdata-tpageparam",[352,2831,2832],{},"InfiniteQueryController\u003CTData, TPageParam>",[356,2834,2835,2836,2839,2840,387,2842,2844],{},"A stable interface exposing pagination actions to the ",[352,2837,2838],{},"InfiniteQueryBuilder.builder"," callback. The controller reference is stable as long as ",[352,2841,2708],{},[352,2843,2075],{}," remain unchanged.",[401,2846,594],{"id":2847},"methods-2",[488,2849,2850,2862],{},[491,2851,2852],{},[494,2853,2854,2857,2860],{},[497,2855,2856],{},"Method",[497,2858,2859],{},"Signature",[497,2861,505],{},[507,2863,2864,2884,2901],{},[494,2865,2866,2871,2876],{},[512,2867,2868],{},[352,2869,2870],{},"fetchNextPage()",[512,2872,2873],{},[352,2874,2875],{},"Future\u003Cvoid>",[512,2877,2878,2879,2302,2881,2883],{},"Fetch and append the next page. No-op if ",[352,2880,1430],{},[352,2882,1465],{}," or a fetch is already in progress.",[494,2885,2886,2891,2895],{},[512,2887,2888],{},[352,2889,2890],{},"fetchPreviousPage()",[512,2892,2893],{},[352,2894,2875],{},[512,2896,2897,2898,2900],{},"Fetch and prepend the previous page. Requires ",[352,2899,1461],{}," to be configured.",[494,2902,2903,2908,2912],{},[512,2904,2905],{},[352,2906,2907],{},"refetch()",[512,2909,2910],{},[352,2911,2875],{},[512,2913,2914,2915,380],{},"Re-fetch all loaded pages in sequence. Useful for pull-to-refresh (",[352,2916,2917],{},"onRefresh: controller.refetch",[924,2919],{},[348,2921,2923],{"id":2922},"infinitequeryfunctiontdata-tpageparam",[352,2924,2739],{},[406,2926,2928],{"className":408,"code":2927,"language":410,"meta":411,"style":411},"typedef InfiniteQueryFunction\u003CTData, TPageParam> = Future\u003CTData> Function(\n  TPageParam pageParam,\n);\n",[352,2929,2930,2962,2971],{"__ignoreMap":411},[415,2931,2932,2935,2937,2939,2941,2943,2945,2947,2949,2952,2954,2956,2958,2960],{"class":417,"line":418},[415,2933,2934],{"class":450},"typedef",[415,2936,2122],{"class":425},[415,2938,442],{"class":429},[415,2940,363],{"class":425},[415,2942,376],{"class":429},[415,2944,371],{"class":425},[415,2946,618],{"class":429},[415,2948,676],{"class":450},[415,2950,2951],{"class":425}," Future",[415,2953,442],{"class":429},[415,2955,363],{"class":425},[415,2957,618],{"class":429},[415,2959,640],{"class":425},[415,2961,1035],{"class":429},[415,2963,2964,2966,2969],{"class":417,"line":433},[415,2965,1829],{"class":425},[415,2967,2968],{"class":429}," pageParam",[415,2970,451],{"class":450},[415,2972,2973,2975],{"class":417,"line":454},[415,2974,2719],{"class":429},[415,2976,695],{"class":450},[356,2978,2979,2980,2982,2983,387,2985,2987,2988,1337,2990,2992,2993,2995],{},"The type of the ",[352,2981,2734],{}," parameter on ",[352,2984,2089],{},[352,2986,118],{},". Receives the page parameter computed by ",[352,2989,1442],{},[352,2991,1461],{}," and returns a ",[352,2994,2222],{}," resolving to a single page of data.",[924,2997],{},[348,2999,3001,3003],{"id":3000},"qoraclient-infinite-query-methods",[352,3002,202],{},": Infinite Query Methods",[401,3005,3007],{"id":3006},"watchinfinitestate",[352,3008,3009],{},"watchInfiniteState",[406,3011,3013],{"className":408,"code":3012,"language":410,"meta":411,"style":411},"Stream\u003CInfiniteQueryState\u003CTData, TPageParam>> watchInfiniteState\u003CTData, TPageParam>(Object key)\n",[352,3014,3015],{"__ignoreMap":411},[415,3016,3017,3020,3022,3025,3027,3029,3031,3033,3036,3038,3040,3042,3044,3046,3048,3050],{"class":417,"line":418},[415,3018,3019],{"class":425},"Stream",[415,3021,442],{"class":429},[415,3023,3024],{"class":425},"InfiniteQueryState",[415,3026,442],{"class":429},[415,3028,363],{"class":425},[415,3030,376],{"class":429},[415,3032,371],{"class":425},[415,3034,3035],{"class":429},">> ",[415,3037,3009],{"class":621},[415,3039,442],{"class":429},[415,3041,363],{"class":425},[415,3043,376],{"class":429},[415,3045,371],{"class":425},[415,3047,628],{"class":429},[415,3049,1713],{"class":425},[415,3051,3052],{"class":429}," key)\n",[356,3054,3055,3056,3058,3059,3061],{},"Returns a broadcast stream that immediately emits the current ",[352,3057,3024],{}," for ",[352,3060,2071],{},", then emits all future transitions. Subscribing prevents the cache entry from being garbage-collected.",[924,3063],{},[401,3065,3067],{"id":3066},"getinfinitequerystate",[352,3068,3069],{},"getInfiniteQueryState",[406,3071,3073],{"className":408,"code":3072,"language":410,"meta":411,"style":411},"InfiniteQueryState\u003CTData, TPageParam> getInfiniteQueryState\u003CTData, TPageParam>(Object key)\n",[352,3074,3075],{"__ignoreMap":411},[415,3076,3077,3079,3081,3083,3085,3087,3089,3091,3093,3095,3097,3099,3101,3103],{"class":417,"line":418},[415,3078,3024],{"class":425},[415,3080,442],{"class":429},[415,3082,363],{"class":425},[415,3084,376],{"class":429},[415,3086,371],{"class":425},[415,3088,618],{"class":429},[415,3090,3069],{"class":621},[415,3092,442],{"class":429},[415,3094,363],{"class":425},[415,3096,376],{"class":429},[415,3098,371],{"class":425},[415,3100,628],{"class":429},[415,3102,1713],{"class":425},[415,3104,3052],{"class":429},[356,3106,3107,3108,3111],{},"Synchronous snapshot of the current state. Returns ",[352,3109,3110],{},"InfiniteInitial()"," if no entry exists in cache.",[924,3113],{},[401,3115,3117],{"id":3116},"getinfinitequerydata",[352,3118,3119],{},"getInfiniteQueryData",[406,3121,3123],{"className":408,"code":3122,"language":410,"meta":411,"style":411},"InfiniteData\u003CTData, TPageParam>? getInfiniteQueryData\u003CTData, TPageParam>(Object key)\n",[352,3124,3125],{"__ignoreMap":411},[415,3126,3127,3129,3131,3133,3135,3137,3139,3141,3144,3146,3148,3150,3152,3154,3156],{"class":417,"line":418},[415,3128,750],{"class":425},[415,3130,442],{"class":429},[415,3132,363],{"class":425},[415,3134,376],{"class":429},[415,3136,371],{"class":425},[415,3138,1563],{"class":429},[415,3140,1566],{"class":450},[415,3142,3143],{"class":621}," getInfiniteQueryData",[415,3145,442],{"class":429},[415,3147,363],{"class":425},[415,3149,376],{"class":429},[415,3151,371],{"class":425},[415,3153,628],{"class":429},[415,3155,1713],{"class":425},[415,3157,3052],{"class":429},[356,3159,3160,3161,3163,3164,3166,3167,3169,3170,399],{},"Returns the ",[352,3162,750],{}," from the current ",[352,3165,1344],{}," state, or ",[352,3168,1945],{}," if the state is not ",[352,3171,1344],{},[406,3173,3176],{"className":408,"code":3174,"filename":3175,"language":410,"meta":411,"style":411},"final snapshot = client.getInfiniteQueryData\u003CList\u003CPost>, int>(['posts']);\n","posts_screen.dart",[352,3177,3178],{"__ignoreMap":411},[415,3179,3180,3182,3185,3187,3189,3191,3193,3195,3197,3199,3202,3205,3207,3210,3214,3217],{"class":417,"line":418},[415,3181,670],{"class":421},[415,3183,3184],{"class":429}," snapshot ",[415,3186,676],{"class":450},[415,3188,2101],{"class":429},[415,3190,399],{"class":450},[415,3192,3119],{"class":621},[415,3194,442],{"class":429},[415,3196,610],{"class":425},[415,3198,442],{"class":429},[415,3200,3201],{"class":425},"Post",[415,3203,3204],{"class":429},">, ",[415,3206,375],{"class":425},[415,3208,3209],{"class":429},">([",[415,3211,3213],{"class":3212},"sfazB","'posts'",[415,3215,3216],{"class":429},"])",[415,3218,695],{"class":450},[924,3220],{},[401,3222,3224],{"id":3223},"setinfinitequerydata",[352,3225,3226],{},"setInfiniteQueryData",[406,3228,3230],{"className":408,"code":3229,"language":410,"meta":411,"style":411},"void setInfiniteQueryData\u003CTData, TPageParam>(\n  Object key,\n  InfiniteData\u003CTData, TPageParam> data, {\n  bool? hasNextPage,\n  bool? hasPreviousPage,\n})\n",[352,3231,3232,3250,3259,3279,3289,3299],{"__ignoreMap":411},[415,3233,3234,3236,3239,3241,3243,3245,3247],{"class":417,"line":418},[415,3235,2227],{"class":421},[415,3237,3238],{"class":621}," setInfiniteQueryData",[415,3240,442],{"class":429},[415,3242,363],{"class":425},[415,3244,376],{"class":429},[415,3246,371],{"class":425},[415,3248,3249],{"class":429},">(\n",[415,3251,3252,3255,3257],{"class":417,"line":433},[415,3253,3254],{"class":425},"  Object",[415,3256,2113],{"class":429},[415,3258,451],{"class":450},[415,3260,3261,3263,3265,3267,3269,3271,3274,3276],{"class":417,"line":454},[415,3262,1552],{"class":425},[415,3264,442],{"class":429},[415,3266,363],{"class":425},[415,3268,376],{"class":429},[415,3270,371],{"class":425},[415,3272,3273],{"class":429},"> data",[415,3275,771],{"class":450},[415,3277,3278],{"class":429}," {\n",[415,3280,3281,3283,3285,3287],{"class":417,"line":470},[415,3282,1575],{"class":425},[415,3284,1566],{"class":450},[415,3286,1014],{"class":429},[415,3288,451],{"class":450},[415,3290,3291,3293,3295,3297],{"class":417,"line":709},[415,3292,1575],{"class":425},[415,3294,1566],{"class":450},[415,3296,1611],{"class":429},[415,3298,451],{"class":450},[415,3300,3301],{"class":417,"line":1038},[415,3302,473],{"class":429},[356,3304,3305,3306,3308,3309,3311],{},"Inject ",[352,3307,750],{}," directly into the cache, pushing an ",[352,3310,1344],{}," state to all active subscribers. Use this for optimistic updates.",[406,3313,3315],{"className":408,"code":3314,"filename":3175,"language":410,"meta":411,"style":411},"// Optimistically prepend a new post to page 1\nfinal snapshot = client.getInfiniteQueryData\u003CList\u003CPost>, int>(['posts']);\nif (snapshot != null) {\n  client.setInfiniteQueryData(\n    ['posts'],\n    InfiniteData(\n      pages: [\n        [Post.optimistic(title), ...snapshot.pages.first],\n        ...snapshot.pages.skip(1),\n      ],\n      pageParams: snapshot.pageParams,\n    ),\n  );\n}\n\ntry {\n  await api.createPost(title);\n  client.invalidateInfiniteQuery(['posts']);\n} catch (_) {\n  if (snapshot != null) client.setInfiniteQueryData(['posts'], snapshot);\n}\n",[352,3316,3317,3322,3356,3370,3381,3393,3400,3409,3443,3468,3475,3491,3497,3504,3508,3512,3519,3536,3554,3566,3598],{"__ignoreMap":411},[415,3318,3319],{"class":417,"line":418},[415,3320,3321],{"class":664},"// Optimistically prepend a new post to page 1\n",[415,3323,3324,3326,3328,3330,3332,3334,3336,3338,3340,3342,3344,3346,3348,3350,3352,3354],{"class":417,"line":433},[415,3325,670],{"class":421},[415,3327,3184],{"class":429},[415,3329,676],{"class":450},[415,3331,2101],{"class":429},[415,3333,399],{"class":450},[415,3335,3119],{"class":621},[415,3337,442],{"class":429},[415,3339,610],{"class":425},[415,3341,442],{"class":429},[415,3343,3201],{"class":425},[415,3345,3204],{"class":429},[415,3347,375],{"class":425},[415,3349,3209],{"class":429},[415,3351,3213],{"class":3212},[415,3353,3216],{"class":429},[415,3355,695],{"class":450},[415,3357,3358,3361,3364,3366,3368],{"class":417,"line":454},[415,3359,3360],{"class":948},"if",[415,3362,3363],{"class":429}," (snapshot ",[415,3365,1130],{"class":450},[415,3367,1133],{"class":450},[415,3369,1136],{"class":429},[415,3371,3372,3375,3377,3379],{"class":417,"line":470},[415,3373,3374],{"class":429},"  client",[415,3376,399],{"class":450},[415,3378,3226],{"class":621},[415,3380,1035],{"class":429},[415,3382,3383,3386,3388,3391],{"class":417,"line":709},[415,3384,3385],{"class":429},"    [",[415,3387,3213],{"class":3212},[415,3389,3390],{"class":429},"]",[415,3392,451],{"class":450},[415,3394,3395,3398],{"class":417,"line":1038},[415,3396,3397],{"class":425},"    InfiniteData",[415,3399,1035],{"class":429},[415,3401,3402,3405,3407],{"class":417,"line":1060},[415,3403,3404],{"class":429},"      pages",[415,3406,938],{"class":450},[415,3408,1153],{"class":429},[415,3410,3411,3414,3416,3418,3421,3424,3426,3429,3432,3434,3436,3438,3441],{"class":417,"line":1072},[415,3412,3413],{"class":429},"        [",[415,3415,3201],{"class":425},[415,3417,399],{"class":450},[415,3419,3420],{"class":621},"optimistic",[415,3422,3423],{"class":429},"(title)",[415,3425,771],{"class":450},[415,3427,3428],{"class":450}," ...",[415,3430,3431],{"class":429},"snapshot",[415,3433,399],{"class":450},[415,3435,386],{"class":429},[415,3437,399],{"class":450},[415,3439,3440],{"class":429},"first]",[415,3442,451],{"class":450},[415,3444,3445,3448,3450,3452,3454,3456,3459,3461,3464,3466],{"class":417,"line":1085},[415,3446,3447],{"class":450},"        ...",[415,3449,3431],{"class":429},[415,3451,399],{"class":450},[415,3453,386],{"class":429},[415,3455,399],{"class":450},[415,3457,3458],{"class":621},"skip",[415,3460,643],{"class":429},[415,3462,1939],{"class":3463},"sbssI",[415,3465,2719],{"class":429},[415,3467,451],{"class":450},[415,3469,3470,3473],{"class":417,"line":1093},[415,3471,3472],{"class":429},"      ]",[415,3474,451],{"class":450},[415,3476,3477,3480,3482,3485,3487,3489],{"class":417,"line":1121},[415,3478,3479],{"class":429},"      pageParams",[415,3481,938],{"class":450},[415,3483,3484],{"class":429}," snapshot",[415,3486,399],{"class":450},[415,3488,390],{"class":429},[415,3490,451],{"class":450},[415,3492,3493,3495],{"class":417,"line":1139},[415,3494,1088],{"class":429},[415,3496,451],{"class":450},[415,3498,3499,3502],{"class":417,"line":1156},[415,3500,3501],{"class":429},"  )",[415,3503,695],{"class":450},[415,3505,3506],{"class":417,"line":1184},[415,3507,1224],{"class":429},[415,3509,3510],{"class":417,"line":1195},[415,3511,701],{"emptyLinePlaceholder":700},[415,3513,3514,3517],{"class":417,"line":1203},[415,3515,3516],{"class":948},"try",[415,3518,3278],{"class":429},[415,3520,3521,3524,3527,3529,3532,3534],{"class":417,"line":1209},[415,3522,3523],{"class":948},"  await",[415,3525,3526],{"class":429}," api",[415,3528,399],{"class":450},[415,3530,3531],{"class":621},"createPost",[415,3533,3423],{"class":429},[415,3535,695],{"class":450},[415,3537,3538,3540,3542,3545,3548,3550,3552],{"class":417,"line":1221},[415,3539,3374],{"class":429},[415,3541,399],{"class":450},[415,3543,3544],{"class":621},"invalidateInfiniteQuery",[415,3546,3547],{"class":429},"([",[415,3549,3213],{"class":3212},[415,3551,3216],{"class":429},[415,3553,695],{"class":450},[415,3555,3557,3560,3563],{"class":417,"line":3556},19,[415,3558,3559],{"class":429},"} ",[415,3561,3562],{"class":948},"catch",[415,3564,3565],{"class":429}," (_) {\n",[415,3567,3569,3572,3574,3576,3578,3581,3583,3585,3587,3589,3591,3593,3596],{"class":417,"line":3568},20,[415,3570,3571],{"class":948},"  if",[415,3573,3363],{"class":429},[415,3575,1130],{"class":450},[415,3577,1133],{"class":450},[415,3579,3580],{"class":429},") client",[415,3582,399],{"class":450},[415,3584,3226],{"class":621},[415,3586,3547],{"class":429},[415,3588,3213],{"class":3212},[415,3590,3390],{"class":429},[415,3592,771],{"class":450},[415,3594,3595],{"class":429}," snapshot)",[415,3597,695],{"class":450},[415,3599,3601],{"class":417,"line":3600},21,[415,3602,1224],{"class":429},[924,3604],{},[401,3606,3608],{"id":3607},"updateinfinitequerystate",[352,3609,3610],{},"updateInfiniteQueryState",[406,3612,3614],{"className":408,"code":3613,"language":410,"meta":411,"style":411},"void updateInfiniteQueryState\u003CTData, TPageParam>(\n  Object key,\n  InfiniteQueryState\u003CTData, TPageParam> state,\n)\n",[352,3615,3616,3633,3641,3658],{"__ignoreMap":411},[415,3617,3618,3620,3623,3625,3627,3629,3631],{"class":417,"line":418},[415,3619,2227],{"class":421},[415,3621,3622],{"class":621}," updateInfiniteQueryState",[415,3624,442],{"class":429},[415,3626,363],{"class":425},[415,3628,376],{"class":429},[415,3630,371],{"class":425},[415,3632,3249],{"class":429},[415,3634,3635,3637,3639],{"class":417,"line":433},[415,3636,3254],{"class":425},[415,3638,2113],{"class":429},[415,3640,451],{"class":450},[415,3642,3643,3646,3648,3650,3652,3654,3656],{"class":417,"line":454},[415,3644,3645],{"class":425},"  InfiniteQueryState",[415,3647,442],{"class":429},[415,3649,363],{"class":425},[415,3651,376],{"class":429},[415,3653,371],{"class":425},[415,3655,2625],{"class":429},[415,3657,451],{"class":450},[415,3659,3660],{"class":417,"line":470},[415,3661,3662],{"class":429},")\n",[356,3664,3665,3666,3668,3669,3671,3672,3674],{},"The raw write path for any ",[352,3667,3024],{},". Used internally by ",[352,3670,2089],{},". Prefer ",[352,3673,3226],{}," for data-only updates.",[924,3676],{},[401,3678,3680],{"id":3679},"invalidateinfinitequery",[352,3681,3544],{},[406,3683,3685],{"className":408,"code":3684,"language":410,"meta":411,"style":411},"void invalidateInfiniteQuery(Object key)\n",[352,3686,3687],{"__ignoreMap":411},[415,3688,3689,3691,3694,3696,3698],{"class":417,"line":418},[415,3690,2227],{"class":421},[415,3692,3693],{"class":621}," invalidateInfiniteQuery",[415,3695,643],{"class":429},[415,3697,1713],{"class":425},[415,3699,3052],{"class":429},[356,3701,3702,3703,1971,3705,3707,3708,3710],{},"Reset the cache entry for ",[352,3704,2071],{},[352,3706,1230],{},". Active ",[352,3709,118],{}," instances detect the reset and automatically re-fetch the first page, so the UI never stays blank.",[406,3712,3715],{"className":408,"code":3713,"filename":3714,"language":410,"meta":411,"style":411},"await api.createPost(title);\nclient.invalidateInfiniteQuery(['posts']);\n","anywhere.dart",[352,3716,3717,3731],{"__ignoreMap":411},[415,3718,3719,3721,3723,3725,3727,3729],{"class":417,"line":418},[415,3720,2495],{"class":948},[415,3722,3526],{"class":429},[415,3724,399],{"class":450},[415,3726,3531],{"class":621},[415,3728,3423],{"class":429},[415,3730,695],{"class":450},[415,3732,3733,3735,3737,3739,3741,3743,3745],{"class":417,"line":433},[415,3734,2075],{"class":429},[415,3736,399],{"class":450},[415,3738,3544],{"class":621},[415,3740,3547],{"class":429},[415,3742,3213],{"class":3212},[415,3744,3216],{"class":429},[415,3746,695],{"class":450},[924,3748],{},[348,3750,3752],{"id":3751},"related","Related",[2238,3754,3755,3762,3767,3774],{},[2241,3756,3757,3761],{},[2509,3758,3760],{"href":3759},"../recipes/infinite-queries","Infinite Queries Guide",": State machine, pagination strategies, bi-directional scroll, windowed paging",[2241,3763,3764,3766],{},[2509,3765,118],{"href":2511},": Flutter widget reference with patterns and examples",[2241,3768,3769,3773],{},[2509,3770,3772],{"href":3771},"./qora-client","QoraClient API",": Full client reference for standard (non-paginated) queries",[2241,3775,3776,3779],{},[2509,3777,215],{"href":3778},"./qora-options",": Retry, stale time, cache time, and network mode",[3781,3782,3783],"style",{},"html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}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 .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 .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 .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 .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}",{"title":411,"searchDepth":433,"depth":433,"links":3785},[3786,3791,3797,3801,3807,3811,3814,3815,3824],{"id":350,"depth":433,"text":354,"children":3787},[3788,3789,3790],{"id":403,"depth":454,"text":404},{"id":482,"depth":454,"text":483},{"id":593,"depth":454,"text":594},{"id":928,"depth":433,"text":931,"children":3792},[3793,3794,3795,3796],{"id":1227,"depth":454,"text":1230},{"id":1279,"depth":454,"text":1282},{"id":1350,"depth":454,"text":1344},{"id":1637,"depth":454,"text":1640},{"id":1756,"depth":433,"text":1759,"children":3798},[3799,3800],{"id":1768,"depth":454,"text":404},{"id":1902,"depth":454,"text":483},{"id":2045,"depth":433,"text":2048,"children":3802},[3803,3804,3805,3806],{"id":2079,"depth":454,"text":404},{"id":2161,"depth":454,"text":483},{"id":2207,"depth":454,"text":594},{"id":2471,"depth":454,"text":2472},{"id":2501,"depth":433,"text":2504,"children":3808},[3809,3810],{"id":2516,"depth":454,"text":404},{"id":2682,"depth":454,"text":2683},{"id":2829,"depth":433,"text":2832,"children":3812},[3813],{"id":2847,"depth":454,"text":594},{"id":2922,"depth":433,"text":2739},{"id":3000,"depth":433,"text":3816,"children":3817},"QoraClient: Infinite Query Methods",[3818,3819,3820,3821,3822,3823],{"id":3006,"depth":454,"text":3009},{"id":3066,"depth":454,"text":3069},{"id":3116,"depth":454,"text":3119},{"id":3223,"depth":454,"text":3226},{"id":3607,"depth":454,"text":3610},{"id":3679,"depth":454,"text":3544},{"id":3751,"depth":433,"text":3752},"Full API reference for InfiniteData, InfiniteQueryState, InfiniteQueryOptions, InfiniteQueryObserver, InfiniteQueryBuilder, InfiniteQueryController, and the QoraClient infinite-query methods.","md",null,{},{"icon":121},{"title":3831,"description":3832},"Infinite Query API Reference - Qora","Complete API reference for Qora's infinite (paginated) query types: InfiniteData, InfiniteQueryState, InfiniteQueryObserver, and InfiniteQueryBuilder","XzHGH-JqmBmZRhNccfz2pqTpiOuCna9-P2aRbySPGqM",[3835,3837],{"title":229,"path":230,"stem":231,"description":3836,"icon":156,"children":-1},"A QoraClient subclass that persists query results to a StorageAdapter and restores them on startup via hydrate().",{"title":243,"path":244,"stem":245,"description":3838,"icon":246,"children":-1},"See every query, mutation and cache entry of the running app, and act on them, from a panel inside the app.",1794040401121]