[{"data":1,"prerenderedAt":967},["ShallowReactive",2],{"navigation_docs_fr":3,"-fr-devtools-overlay":342,"-fr-devtools-overlay-surround":962},[4,45,91,137,195,236,257,291,327],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":44},"Prise en main","i-lucide-rocket","/fr/getting-started","fr/01.getting-started",[10,15,20,24,29,34,39],{"title":11,"path":12,"stem":13,"icon":14},"Qu'est-ce que Qora ?","/fr/getting-started/what-is-qora","fr/01.getting-started/2.what-is-qora","i-lucide-info",{"title":16,"path":17,"stem":18,"icon":19},"Installation","/fr/getting-started/installation","fr/01.getting-started/3.installation","i-lucide-download",{"title":21,"path":22,"stem":23,"icon":6},"Démarrage rapide","/fr/getting-started/quick-start","fr/01.getting-started/4.quick-start",{"title":25,"path":26,"stem":27,"icon":28},"Comparaison","/fr/getting-started/comparison","fr/01.getting-started/5.comparison","i-lucide-scale",{"title":30,"path":31,"stem":32,"icon":33},"Venant de TanStack Query","/fr/getting-started/coming-from-tanstack-query","fr/01.getting-started/6.coming-from-tanstack-query","i-lucide-arrow-left-right",{"title":35,"path":36,"stem":37,"icon":38},"Migrer depuis d'Autres Librairies","/fr/getting-started/migrating-from-other-libraries","fr/01.getting-started/7.migrating-from-other-libraries","i-lucide-arrow-right-left",{"title":40,"path":41,"stem":42,"icon":43},"Assistants IA","/fr/getting-started/ai-assistants","fr/01.getting-started/8.ai-assistants","i-lucide-sparkles",false,{"title":46,"icon":47,"path":48,"stem":49,"children":50,"page":44},"Concepts clés","i-lucide-book-open","/fr/core-concepts","fr/02.core-concepts",[51,56,61,66,71,76,81,86],{"title":52,"path":53,"stem":54,"icon":55},"Requêtes","/fr/core-concepts/queries","fr/02.core-concepts/1.queries","i-lucide-database",{"title":57,"path":58,"stem":59,"icon":60},"Clés de requête","/fr/core-concepts/query-keys","fr/02.core-concepts/2.query-keys","i-lucide-key-round",{"title":62,"path":63,"stem":64,"icon":65},"États des requêtes","/fr/core-concepts/query-states","fr/02.core-concepts/3.query-states","i-lucide-activity",{"title":67,"path":68,"stem":69,"icon":70},"Cache","/fr/core-concepts/caching","fr/02.core-concepts/4.caching","i-lucide-layers-3",{"title":72,"path":73,"stem":74,"icon":75},"Stale-While-Revalidate","/fr/core-concepts/stale-while-revalidate","fr/02.core-concepts/5.stale-while-revalidate","i-lucide-timer-reset",{"title":77,"path":78,"stem":79,"icon":80},"Déduplication","/fr/core-concepts/deduplication","fr/02.core-concepts/6.deduplication","i-lucide-copy-minus",{"title":82,"path":83,"stem":84,"icon":85},"Mutations et invalidation","/fr/core-concepts/mutations","fr/02.core-concepts/7.mutations","i-lucide-pencil-line",{"title":87,"path":88,"stem":89,"icon":90},"Hors-ligne et réseau","/fr/core-concepts/offline","fr/02.core-concepts/8.offline","i-lucide-wifi-off",{"title":92,"icon":93,"path":94,"stem":95,"children":96,"page":44},"Usage avec Flutter","i-lucide-smartphone","/fr/flutter-integration","fr/03.flutter-integration",[97,102,107,112,117,122,127,132],{"title":98,"path":99,"stem":100,"icon":101},"Configuration","/fr/flutter-integration/setup","fr/03.flutter-integration/1.setup","i-lucide-wrench",{"title":103,"path":104,"stem":105,"icon":106},"QoraScope","/fr/flutter-integration/qora-scope","fr/03.flutter-integration/2.qora-scope","i-lucide-share-2",{"title":108,"path":109,"stem":110,"icon":111},"QoraBuilder","/fr/flutter-integration/qora-builder","fr/03.flutter-integration/3.qora-builder","i-lucide-blocks",{"title":113,"path":114,"stem":115,"icon":116},"QoraMutationBuilder","/fr/flutter-integration/qora-mutation-builder","fr/03.flutter-integration/4.qora-mutation-builder","i-lucide-pencil",{"title":118,"path":119,"stem":120,"icon":121},"InfiniteQueryBuilder","/fr/flutter-integration/infinite-query-builder","fr/03.flutter-integration/5.infinite-query-builder","i-lucide-infinity",{"title":123,"path":124,"stem":125,"icon":126},"Hooks (flutter_hooks)","/fr/flutter-integration/hooks","fr/03.flutter-integration/6.hooks","i-lucide-anchor",{"title":128,"path":129,"stem":130,"icon":131},"Widgets de statut réseau","/fr/flutter-integration/network-status","fr/03.flutter-integration/7.network-status","i-lucide-wifi",{"title":133,"path":134,"stem":135,"icon":136},"Bonnes pratiques","/fr/flutter-integration/best-practices","fr/03.flutter-integration/8.best-practices","i-lucide-badge-check",{"title":138,"icon":139,"path":140,"stem":141,"children":142,"page":44},"Guides Pratiques","i-lucide-chef-hat","/fr/recipes","fr/04.recipes",[143,147,152,157,162,166,171,176,181,186,191],{"title":144,"path":145,"stem":146,"icon":85},"Mutations","/fr/recipes/mutations","fr/04.recipes/02.mutations",{"title":148,"path":149,"stem":150,"icon":151},"Mises à jour optimistes","/fr/recipes/optimistic-updates","fr/04.recipes/03.optimistic-updates","i-lucide-zap",{"title":153,"path":154,"stem":155,"icon":156},"Persistance","/fr/recipes/persistence","fr/04.recipes/04.persistence","i-lucide-hard-drive",{"title":158,"path":159,"stem":160,"icon":161},"Réseau adaptatif","/fr/recipes/network-aware","fr/04.recipes/05.network-aware","i-lucide-signal",{"title":163,"path":164,"stem":165,"icon":121},"Requêtes infinies","/fr/recipes/infinite-queries","fr/04.recipes/06.infinite-queries",{"title":167,"path":168,"stem":169,"icon":170},"Requêtes dépendantes","/fr/recipes/dependent-queries","fr/04.recipes/07.dependent-queries","i-lucide-link-2",{"title":172,"path":173,"stem":174,"icon":175},"Annulation","/fr/recipes/cancel-token","fr/04.recipes/08.cancel-token","i-lucide-circle-slash",{"title":177,"path":178,"stem":179,"icon":180},"Hydratation SSR","/fr/recipes/ssr-hydration","fr/04.recipes/09.ssr-hydration","i-lucide-server",{"title":182,"path":183,"stem":184,"icon":185},"Gestion des erreurs","/fr/recipes/error-handling","fr/04.recipes/10.error-handling","i-lucide-shield-alert",{"title":187,"path":188,"stem":189,"icon":190},"Tests","/fr/recipes/testing","fr/04.recipes/11.testing","i-lucide-flask-conical",{"title":192,"path":193,"stem":194},"Prefetch au Niveau des Routes","/fr/recipes/prefetch","fr/04.recipes/12.prefetch",{"title":196,"icon":197,"path":198,"stem":199,"children":200,"page":44},"Référence de l'API","i-lucide-file-code","/fr/api-reference","fr/05.api-reference",[201,206,210,214,219,224,228,232],{"title":202,"path":203,"stem":204,"icon":205},"QoraClient","/fr/api-reference/qora-client","fr/05.api-reference/1.qora-client","i-lucide-cpu",{"title":207,"path":208,"stem":209,"icon":60},"QoraKey","/fr/api-reference/qora-key","fr/05.api-reference/2.qora-key",{"title":211,"path":212,"stem":213,"icon":65},"QoraState","/fr/api-reference/qora-state","fr/05.api-reference/3.qora-state",{"title":215,"path":216,"stem":217,"icon":218},"QoraOptions","/fr/api-reference/qora-options","fr/05.api-reference/4.qora-options","i-lucide-sliders-horizontal",{"title":220,"path":221,"stem":222,"icon":223},"QoraClientConfig","/fr/api-reference/qora-client-config","fr/05.api-reference/5.qora-client-config","i-lucide-settings-2",{"title":225,"path":226,"stem":227,"icon":85},"API Mutation","/fr/api-reference/qora-mutation","fr/05.api-reference/6.qora-mutation",{"title":229,"path":230,"stem":231,"icon":156},"PersistQoraClient","/fr/api-reference/persist-qora-client","fr/05.api-reference/7.persist-qora-client",{"title":233,"path":234,"stem":235,"icon":121},"Requête infinie","/fr/api-reference/infinite-query","fr/05.api-reference/8.infinite-query",{"title":237,"icon":238,"path":239,"stem":240,"children":241,"page":44},"Outils de debug","i-lucide-bug","/fr/devtools","fr/06.devtools",[242,247,252],{"title":243,"path":244,"stem":245,"icon":246},"Vue d'ensemble","/fr/devtools/overview","fr/06.devtools/1.overview","i-lucide-layout-dashboard",{"title":248,"path":249,"stem":250,"icon":251},"Overlay intégré","/fr/devtools/overlay","fr/06.devtools/2.overlay","i-lucide-layers",{"title":253,"path":254,"stem":255,"icon":256},"Sérialisation des données","/fr/devtools/data-display","fr/06.devtools/4.data-display","i-lucide-eye",{"title":258,"icon":259,"path":260,"stem":261,"children":262,"page":44},"Intégrations tierces","i-lucide-puzzle","/fr/third-party","fr/07.third-party",[263,268,272,277,282,286],{"title":264,"path":265,"stem":266,"icon":267},"Avec Provider","/fr/third-party/with-provider","fr/07.third-party/1.with-provider","i-lucide-plug",{"title":269,"path":270,"stem":271,"icon":111},"Avec BLoC","/fr/third-party/with-bloc","fr/07.third-party/2.with-bloc",{"title":273,"path":274,"stem":275,"icon":276},"Avec Riverpod","/fr/third-party/with-riverpod","fr/07.third-party/3.with-riverpod","i-lucide-droplets",{"title":278,"path":279,"stem":280,"icon":281},"Avec RxDart","/fr/third-party/with-rxdart","fr/07.third-party/4.with-rxdart","i-lucide-git-branch",{"title":283,"path":284,"stem":285},"Avec Dio","/fr/third-party/with-dio","fr/07.third-party/5.with-dio",{"title":287,"path":288,"stem":289,"icon":290},"Avec GraphQL","/fr/third-party/with-graphql","fr/07.third-party/6.with-graphql","i-lucide-binary",{"title":292,"icon":190,"path":293,"stem":294,"children":295,"page":44},"Exemples","/fr/examples","fr/08.examples",[296,301,305,310,314,318,322],{"title":297,"path":298,"stem":299,"icon":300},"Étude de cas : Liste et détail utilisateur","/fr/examples/basic-query","fr/08.examples/1.basic-query","i-lucide-play-circle",{"title":302,"path":303,"stem":304,"icon":151},"Étude de cas : Mutations optimistes et rollback","/fr/examples/mutations-optimistic","fr/08.examples/2.mutations-optimistic",{"title":306,"path":307,"stem":308,"icon":309},"Étude de cas : Feed à défilement infini","/fr/examples/infinite-scroll","fr/08.examples/3.infinite-scroll","i-lucide-scroll",{"title":311,"path":312,"stem":313,"icon":90},"Étude de cas : Application Todo offline-first","/fr/examples/offline-first","fr/08.examples/4.offline-first",{"title":315,"path":316,"stem":317,"icon":161},"Étude de cas : Conscience réseau","/fr/examples/network-awareness","fr/08.examples/5.network-awareness",{"title":319,"path":320,"stem":321,"icon":126},"Étude de cas : Intégration des hooks","/fr/examples/hooks-integration","fr/08.examples/6.hooks-integration",{"title":323,"path":324,"stem":325,"icon":326},"Étude de cas : Application Todo complète","/fr/examples/complete-todo-app","fr/08.examples/7.complete-todo-app","i-lucide-check-square",{"title":328,"icon":329,"path":330,"stem":331,"children":332,"page":44},"Aide","i-lucide-life-buoy","/fr/help","fr/09.help",[333,338],{"title":334,"path":335,"stem":336,"icon":337},"FAQ","/fr/help/faq","fr/09.help/1.faq","i-lucide-circle-help",{"title":339,"path":340,"stem":341,"icon":101},"Dépannage","/fr/help/troubleshooting","fr/09.help/2.troubleshooting",{"id":343,"title":248,"body":344,"description":955,"extension":956,"links":957,"meta":958,"navigation":959,"path":249,"seo":960,"stem":250,"__hash__":961},"docs_fr/fr/06.devtools/2.overlay.md",{"type":345,"value":346,"toc":946},"minimark",[347,351,394,403,406,410,440,469,471,474,491,770,777,796,806,808,812,815,831,833,836,839,844,913,918,922,939,942],[348,349,350],"p",{},"L'overlay est un panneau rendu à l'intérieur de l'app en cours d'exécution. Il offre une visibilité en temps réel sur les requêtes, mutations et mises à jour optimistes.",[352,353,356,386],"tabs",{"className":354},[355],"w-full",[357,358,360],"tabs-item",{"icon":93,"label":359},"Vue mobile",[361,362,367,374,380],"div",{"className":363},[364,365,366],"grid","grid-cols-3","gap-2",[348,368,369],{},[370,371],"img",{"alt":372,"src":373},"Onglet Queries","/devtools/overlay-panel-1.png",[348,375,376],{},[370,377],{"alt":378,"src":379},"Onglet Mutations","/devtools/overlay-panel-2.png",[348,381,382],{},[370,383],{"alt":384,"src":385},"Onglet Timeline","/devtools/overlay-panel-3.png",[357,387,390],{"icon":388,"label":389},"i-lucide-monitor","Vue tablette/desktop",[370,391],{"alt":392,"src":393},"Qora DevTools Overlay","/devtools/overlay-panel-tablet.png",[395,396,397,398,402],"note",{},"L'overlay est ",[399,400,401],"strong",{},"absent des builds de release",". Le package n'a aucun impact sur le bundle de production.",[404,405],"hr",{},[407,408,16],"h2",{"id":409},"installation",[411,412,418],"pre",{"className":413,"code":414,"filename":415,"language":416,"meta":417,"style":417},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","flutter pub add qora_devtools_overlay\n","Terminal","bash","",[419,420,421],"code",{"__ignoreMap":417},[422,423,426,430,434,437],"span",{"class":424,"line":425},"line",1,[422,427,429],{"class":428},"sBMFI","flutter",[422,431,433],{"class":432},"sfazB"," pub",[422,435,436],{"class":432}," add",[422,438,439],{"class":432}," qora_devtools_overlay\n",[348,441,442,443,446,447,450,451,454,455,458,459,462,463,468],{},"Ajoutez-le dans ",[419,444,445],{},"dependencies",", pas dans ",[419,448,449],{},"dev_dependencies"," : votre ",[419,452,453],{},"main.dart"," l'importe, et importer une dépendance de dev depuis ",[419,456,457],{},"lib/"," est signalé par le lint ",[419,460,461],{},"depend_on_referenced_packages",". Il ne coûte rien en release, comme expliqué dans ",[464,465,467],"a",{"href":466},"#s%C3%A9curit%C3%A9-en-production","Sécurité en production",".",[404,470],{},[407,472,98],{"id":473},"configuration",[348,475,476,477,480,481,483,484,487,488,490],{},"Créer un ",[419,478,479],{},"OverlayTracker"," et le passer à la fois à ",[419,482,202],{}," et à ",[419,485,486],{},"QoraInspector",". Passer la référence du client à ",[419,489,486],{}," pour activer les boutons d'action de l'inspecteur.",[411,492,496],{"className":493,"code":494,"filename":453,"language":495,"meta":417,"style":417},"language-dart shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import 'package:flutter/foundation.dart';\nimport 'package:flutter/material.dart';\nimport 'package:qora_devtools_overlay/qora_devtools_overlay.dart';\nimport 'package:qora_flutter/qora_flutter.dart';\n\nvoid main() {\n  final tracker = OverlayTracker();\n\n  final client = QoraClient(\n    // null en mode release : QoraClient utilise NoOpTracker, aucun événement émis.\n    tracker: kDebugMode ? tracker : null,\n  );\n\n  runApp(\n    QoraInspector(\n      tracker: tracker,\n      // Requis pour que les boutons d'action (Refetch, Invalidate, Remove, etc.)\n      // opèrent sur le cache en direct. Omettre cela désactive la section ACTIONS.\n      client: kDebugMode ? client : null,\n      child: QoraScope.auto(client: client, child: const MyApp()),\n    ),\n  );\n}\n","dart",[419,497,498,511,521,531,541,548,563,583,588,604,611,633,641,646,654,662,676,682,688,706,749,757,764],{"__ignoreMap":417},[422,499,500,504,507],{"class":424,"line":425},[422,501,503],{"class":502},"sbssI","import",[422,505,506],{"class":432}," 'package:flutter/foundation.dart'",[422,508,510],{"class":509},"sMK4o",";\n",[422,512,514,516,519],{"class":424,"line":513},2,[422,515,503],{"class":502},[422,517,518],{"class":432}," 'package:flutter/material.dart'",[422,520,510],{"class":509},[422,522,524,526,529],{"class":424,"line":523},3,[422,525,503],{"class":502},[422,527,528],{"class":432}," 'package:qora_devtools_overlay/qora_devtools_overlay.dart'",[422,530,510],{"class":509},[422,532,534,536,539],{"class":424,"line":533},4,[422,535,503],{"class":502},[422,537,538],{"class":432}," 'package:qora_flutter/qora_flutter.dart'",[422,540,510],{"class":509},[422,542,544],{"class":424,"line":543},5,[422,545,547],{"emptyLinePlaceholder":546},true,"\n",[422,549,551,555,559],{"class":424,"line":550},6,[422,552,554],{"class":553},"spNyl","void",[422,556,558],{"class":557},"s2Zo4"," main",[422,560,562],{"class":561},"sTEyZ","() {\n",[422,564,566,569,572,575,578,581],{"class":424,"line":565},7,[422,567,568],{"class":553},"  final",[422,570,571],{"class":561}," tracker ",[422,573,574],{"class":509},"=",[422,576,577],{"class":428}," OverlayTracker",[422,579,580],{"class":561},"()",[422,582,510],{"class":509},[422,584,586],{"class":424,"line":585},8,[422,587,547],{"emptyLinePlaceholder":546},[422,589,591,593,596,598,601],{"class":424,"line":590},9,[422,592,568],{"class":553},[422,594,595],{"class":561}," client ",[422,597,574],{"class":509},[422,599,600],{"class":428}," QoraClient",[422,602,603],{"class":561},"(\n",[422,605,607],{"class":424,"line":606},10,[422,608,610],{"class":609},"sHwdD","    // null en mode release : QoraClient utilise NoOpTracker, aucun événement émis.\n",[422,612,614,617,620,623,626,628,630],{"class":424,"line":613},11,[422,615,616],{"class":561},"    tracker",[422,618,619],{"class":509},":",[422,621,622],{"class":561}," kDebugMode ",[422,624,625],{"class":509},"?",[422,627,571],{"class":561},[422,629,619],{"class":509},[422,631,632],{"class":509}," null,\n",[422,634,636,639],{"class":424,"line":635},12,[422,637,638],{"class":561},"  )",[422,640,510],{"class":509},[422,642,644],{"class":424,"line":643},13,[422,645,547],{"emptyLinePlaceholder":546},[422,647,649,652],{"class":424,"line":648},14,[422,650,651],{"class":557},"  runApp",[422,653,603],{"class":561},[422,655,657,660],{"class":424,"line":656},15,[422,658,659],{"class":428},"    QoraInspector",[422,661,603],{"class":561},[422,663,665,668,670,673],{"class":424,"line":664},16,[422,666,667],{"class":561},"      tracker",[422,669,619],{"class":509},[422,671,672],{"class":561}," tracker",[422,674,675],{"class":509},",\n",[422,677,679],{"class":424,"line":678},17,[422,680,681],{"class":609},"      // Requis pour que les boutons d'action (Refetch, Invalidate, Remove, etc.)\n",[422,683,685],{"class":424,"line":684},18,[422,686,687],{"class":609},"      // opèrent sur le cache en direct. Omettre cela désactive la section ACTIONS.\n",[422,689,691,694,696,698,700,702,704],{"class":424,"line":690},19,[422,692,693],{"class":561},"      client",[422,695,619],{"class":509},[422,697,622],{"class":561},[422,699,625],{"class":509},[422,701,595],{"class":561},[422,703,619],{"class":509},[422,705,632],{"class":509},[422,707,709,712,714,717,719,722,725,727,730,733,736,738,741,744,747],{"class":424,"line":708},20,[422,710,711],{"class":561},"      child",[422,713,619],{"class":509},[422,715,716],{"class":428}," QoraScope",[422,718,468],{"class":509},[422,720,721],{"class":557},"auto",[422,723,724],{"class":561},"(client",[422,726,619],{"class":509},[422,728,729],{"class":561}," client",[422,731,732],{"class":509},",",[422,734,735],{"class":561}," child",[422,737,619],{"class":509},[422,739,740],{"class":553}," const",[422,742,743],{"class":428}," MyApp",[422,745,746],{"class":561},"())",[422,748,675],{"class":509},[422,750,752,755],{"class":424,"line":751},21,[422,753,754],{"class":561},"    )",[422,756,675],{"class":509},[422,758,760,762],{"class":424,"line":759},22,[422,761,638],{"class":561},[422,763,510],{"class":509},[422,765,767],{"class":424,"line":766},23,[422,768,769],{"class":561},"}\n",[348,771,772,773,776],{},"En mode debug, un bouton ",[399,774,775],{},"Q"," est rendu dans le coin inférieur droit de l'écran. Appuyer dessus ouvre le panneau.",[778,779,781,782,785,786,788,789,791,792,795],"callout",{"type":780},"warning","Le paramètre ",[419,783,784],{},"client"," est optionnel. ",[419,787,486],{}," opère en tant qu'observateur en lecture seule quand ",[419,790,784],{}," n'est pas fourni. La section ",[399,793,794],{},"ACTIONS"," n'est pas rendue dans ce cas.",[778,797,799,801,802,805],{"type":798},"info",[419,800,486],{}," ne rend rien dans les builds de release. La garde est appliquée au niveau du widget : le sous-arbre overlay n'est pas construit quand ",[419,803,804],{},"kDebugMode"," est false.",[404,807],{},[407,809,811],{"id":810},"comportement-responsive","Comportement responsive",[348,813,814],{},"La disposition de l'overlay s'adapte à la largeur d'écran disponible.",[816,817,818,825],"ul",{},[819,820,821,824],"li",{},[399,822,823],{},"600 px et plus"," (tablette, desktop) : disposition trois colonnes avec tous les panneaux visibles simultanément.",[819,826,827,830],{},[399,828,829],{},"Moins de 600 px"," (téléphone) : navigation mono-colonne avec navigation vers les vues inspecteur et timeline.",[404,832],{},[407,834,467],{"id":835},"sécurité-en-production",[348,837,838],{},"Deux mécanismes indépendants tiennent l'overlay à l'écart de la production :",[840,841,843],"h3",{"id":842},"_1-garde-à-la-compilation","1. Garde à la compilation",[411,845,847],{"className":493,"code":846,"language":495,"meta":417,"style":417},"@override\nWidget build(BuildContext context) {\n  if (!kDebugMode) return child; // rien n'est construit en release\n  return _buildOverlay();\n}\n",[419,848,849,854,871,897,909],{"__ignoreMap":417},[422,850,851],{"class":424,"line":425},[422,852,853],{"class":553},"@override\n",[422,855,856,859,862,865,868],{"class":424,"line":513},[422,857,858],{"class":428},"Widget",[422,860,861],{"class":557}," build",[422,863,864],{"class":561},"(",[422,866,867],{"class":428},"BuildContext",[422,869,870],{"class":561}," context) {\n",[422,872,873,877,880,883,886,889,891,894],{"class":424,"line":523},[422,874,876],{"class":875},"s7zQu","  if",[422,878,879],{"class":561}," (",[422,881,882],{"class":509},"!",[422,884,885],{"class":561},"kDebugMode) ",[422,887,888],{"class":875},"return",[422,890,735],{"class":561},[422,892,893],{"class":509},";",[422,895,896],{"class":609}," // rien n'est construit en release\n",[422,898,899,902,905,907],{"class":424,"line":533},[422,900,901],{"class":875},"  return",[422,903,904],{"class":557}," _buildOverlay",[422,906,580],{"class":561},[422,908,510],{"class":509},[422,910,911],{"class":424,"line":543},[422,912,769],{"class":561},[348,914,915,917],{},[419,916,804],{}," est une constante de compilation. En build release, la branche de l'overlay est inatteignable, et le tree shaking retire le code du panneau.",[840,919,921],{"id":920},"_2-nooptracker-en-release","2. NoOpTracker en release",[348,923,924,926,927,930,931,934,935,938],{},[419,925,202],{}," est construit avec ",[419,928,929],{},"tracker: kDebugMode ? tracker : null",". En mode release, ",[419,932,933],{},"null"," active ",[419,936,937],{},"NoOpTracker",". Ses méthodes sont des no-ops et aucun événement de suivi n'est émis.",[348,940,941],{},"Résultat : aucun impact d'exécution depuis le chemin du tracker overlay en production.",[943,944,945],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}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}",{"title":417,"searchDepth":513,"depth":513,"links":947},[948,949,950,951],{"id":409,"depth":513,"text":16},{"id":473,"depth":513,"text":98},{"id":810,"depth":513,"text":811},{"id":835,"depth":513,"text":467,"children":952},[953,954],{"id":842,"depth":523,"text":843},{"id":920,"depth":523,"text":921},"Un panneau de débogage flottant rendu à l'intérieur de l'app Flutter. Inspectez les requêtes, mutations et mises à jour optimistes sans outil externe.","md",null,{},{"icon":251},{"title":248,"description":955},"Ee1IgIXGiREwJcwyh4m09RkQTy5FLMD_39pfhNMY6X8",[963,965],{"title":243,"path":244,"stem":245,"description":964,"icon":246,"children":-1},"Voir chaque requête, mutation et entrée de cache de l'application en cours d'exécution, et agir dessus, depuis un panneau intégré à l'application.",{"title":253,"path":254,"stem":255,"description":966,"icon":256,"children":-1},"Comment les données de requête en cache deviennent l'arbre JSON affiché dans l'overlay, et comment rendre lisibles les types de modèles personnalisés.",1794040410425]