[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"technologies":3,"\u002Fopen-source\u002Fflutter-progress-dialog":167},[4,10,15,21,26,32,38,43,48,53,58,63,68,73,77,82,87,92,97,103,108,113,118,123,128,133,138,143,147,152,157,162],{"title":5,"description":6,"slug":7,"category":8,"icon":9},"Android","Elke app die we uitbrengen bereikt Android — platform-API's, uitvoering op de achtergrond, permissies en de winkeleisen die daarbij horen.","android","framework","logos:android-icon",{"title":11,"description":12,"slug":13,"category":8,"icon":14},"Angular","Het front-endframework waarin we werken als een product al Angular is — een kant-en-klare structuur die past bij grote, langlevende applicaties.","angular","logos:angular-icon",{"title":16,"description":17,"slug":18,"category":19,"icon":20},"Dart","De taal waarin elke Flutter-app die we uitbrengen geschreven is — sound null safety, echte pattern matching, en een compiler voor native en web.","dart","language","logos:dart",{"title":22,"description":23,"slug":24,"category":8,"icon":25},"Django","Het Python-framework dat we pakken als een product op dag één een beheeromgeving, authenticatie en een echt datamodel nodig heeft.","django","logos:django-icon",{"title":27,"description":28,"slug":29,"category":30,"icon":31},"Docker","Elke service die we bouwen verschijnt als container, zodat wat op een laptop, in CI en in productie draait één artefact is en niet drie verschillende.","docker","infrastructure","logos:docker-icon",{"title":33,"description":34,"slug":35,"category":36,"icon":37},"Fastlane","De releaseautomatisering achter ons mobiele werk — ondertekenen, builds en winkeluploads draaien vanuit CI, niet vanaf één laptop.","fastlane","tools","logos:fastlane",{"title":39,"description":40,"slug":41,"category":8,"icon":42},"Flutter","Onze belangrijkste mobiele stack sinds 2018 — één Dart-codebase die uitkomt op iOS, Android, web en desktop zonder een apart team per platform.","flutter","logos:flutter",{"title":44,"description":45,"slug":46,"category":36,"icon":47},"Git","Elk project dat we aanraken leeft in Git — beoordeelde pull requests, CI op elke branch, en een historie die maanden later nog te volgen is.","git","logos:git-icon",{"title":49,"description":50,"slug":51,"category":19,"icon":52},"Go","Onze backendtaal voor realtime-API's en services onder belasting — kleine binaries, snelle builds, en gelijktijdigheid die leesbaar blijft.","go","logos:gopher",{"title":54,"description":55,"slug":56,"category":30,"icon":57},"Google Cloud","De cloud waarop onze productieworkloads draaien — beheerde Kubernetes, opslag en netwerken, zonder handgebouwde servers die niemand wil onderhouden.","gcp","logos:google-cloud",{"title":59,"description":60,"slug":61,"category":36,"icon":62},"Gradle","Het buildsysteem waar elke Android-release doorheen gaat — product flavours, ondertekeningsconfiguraties, en de afhankelijkheden onder een Flutter-app.","gradle","logos:gradle",{"title":64,"description":65,"slug":66,"category":30,"icon":67},"Helm","Hoe we een Kubernetes-uitrol verpakken — service, configuratie, secrets en ingress als één versiebeheerde eenheid die je kunt promoveren en terugdraaien.","helm","logos:helm",{"title":69,"description":70,"slug":71,"category":19,"icon":72},"Kotlin","Waar we naar grijpen als een Flutter-app echt Android eronder nodig heeft — platform channels, achtergrondwerk en integraties met native SDK's.","kotlin","logos:kotlin-icon",{"title":74,"description":75,"slug":76,"category":8,"icon":72},"Kotlin Multiplatform","Bedrijfslogica delen tussen iOS en Android terwijl elk platform zijn eigen native UI houdt — het alternatief wanneer Flutter niet past.","kmp",{"title":78,"description":79,"slug":80,"category":30,"icon":81},"Kubernetes","Hoe we services in productie draaien — Helm-uitrollen, rollouts die terug te draaien zijn, en schalen zonder dat iemand om 3 uur 's nachts wakker hoeft te zijn.","kubernetes","logos:kubernetes",{"title":83,"description":84,"slug":85,"category":30,"icon":86},"NATS","Lichtgewicht berichtenverkeer tussen services — publish\u002Fsubscribe en request\u002Freply zonder het beheergewicht van een volledig brokercluster.","nats","logos:nats-icon",{"title":88,"description":89,"slug":90,"category":8,"icon":91},"Nuxt","Vue met serverrendering, routering en SEO al geregeld — hoe we marketingsites en webapps bouwen die bij het eerste laden snel en vindbaar moeten zijn.","nuxt","logos:nuxt-icon",{"title":93,"description":94,"slug":95,"category":19,"icon":96},"PHP","Waar we met een bestaande PHP-backend werken — hem uitbreiden, ermee integreren, en de mobiele en webclients bouwen die hij moet bedienen.","php","logos:php",{"title":98,"description":99,"slug":100,"category":101,"icon":102},"PostgreSQL","Onze standaarddatabase — waar we naar grijpen tenzij een product een specifieke reden geeft om dat niet te doen, van schema tot indexen.","postgres","database","logos:postgresql",{"title":104,"description":105,"slug":106,"category":19,"icon":107},"Python","Onze taal voor backends, datawerk en AI-integraties — inclusief de Python-bindings die we bij onze eigen Rust-tooling leveren.","python","logos:python",{"title":109,"description":110,"slug":111,"category":8,"icon":112},"React","De front-endbibliotheek waarin we werken als een product al React is — componenten, hooks, en het ecosysteem dat eromheen is gegroeid.","react","logos:react",{"title":114,"description":115,"slug":116,"category":101,"icon":117},"Redis","Waar we data neerzetten die snel moet zijn en opnieuw op te bouwen valt — caches, sessies, verzoeklimieten en achtergrondwachtrijen.","redis","logos:redis",{"title":119,"description":120,"slug":121,"category":19,"icon":122},"Ruby","De taal waarin onze mobiele releaseautomatisering geschreven is — Fastlane-lanes, eigen acties, en de CI-lijm die builds naar de winkels brengt.","ruby","logos:ruby",{"title":124,"description":125,"slug":126,"category":19,"icon":127},"Rust","Waar we heen gaan als prestaties én correctheid allebei tellen — documenten renderen, CLI-tooling, en services die snel en voorspelbaar moeten blijven.","rust","simple-icons:rust",{"title":129,"description":130,"slug":131,"category":101,"icon":132},"SQLite","De database die meereist in de app — lokale caches, offline-first opslag, en alles wat ook zonder netwerk moet blijven werken.","sqlite","logos:sqlite",{"title":134,"description":135,"slug":136,"category":8,"icon":137},"Strapi","Een headless CMS waar we naar grijpen als redacteuren de content moeten beheren — een echte beheeromgeving en een schone API, zonder ze zelf te bouwen.","strapi","logos:strapi-icon",{"title":139,"description":140,"slug":141,"category":19,"icon":142},"Swift","Waar we naar grijpen als een Flutter-app echt iOS eronder nodig heeft — platform channels, integraties met native SDK's, widgets en App Clips.","swift","logos:swift",{"title":144,"description":145,"slug":146,"category":8,"icon":142},"SwiftUI","Het UI-framework van Apple, waar we de native oppervlakken bouwen die een Flutter-app niet kan afdekken — widgets, App Clips, extensies en systeemintegraties.","swiftui",{"title":148,"description":149,"slug":150,"category":8,"icon":151},"Tailwind CSS","Hoe we elke front-end die we bouwen vormgeven — utility-klassen en designtokens in plaats van een stylesheet die alleen maar groeit en nooit wordt opgeschoond.","tailwind","logos:tailwindcss-icon",{"title":153,"description":154,"slug":155,"category":19,"icon":156},"TypeScript","De standaard voor alles wat we voor de browser en voor Node-services schrijven — types die integratiebugs vangen voordat ze een review halen.","typescript","logos:typescript-icon",{"title":158,"description":159,"slug":160,"category":8,"icon":161},"Vue","Ons front-endframework voor beheerpanelen, dashboards voor winkeliers en webapps die jaren onderhoudbaar moeten blijven, geen sprints.","vue","logos:vue",{"title":163,"description":164,"slug":165,"category":36,"icon":166},"Whisper","Het opensource spraakherkenningsmodel van OpenAI — de transcriptiemotor achter spraakinvoer, draaiend als backendservice én op het toestel in de app.","whisper","simple-icons:openai",{"id":168,"title":169,"body":170,"description":594,"extension":595,"links":596,"meta":600,"metaDescription":601,"metaTitle":602,"navigation":476,"ogDescription":603,"path":604,"repository":605,"seo":609,"slug":608,"stem":610,"technologies":611,"updated":612,"__hash__":613,"stats":614},"open_source_nl\u002Fopen-source\u002Fflutter-progress-dialog.md","Flutter Future Progress Dialog",{"type":171,"value":172,"toc":582},"minimark",[173,178,182,185,188,204,208,223,231,234,238,308,312,317,323,327,333,337,346,350,353,357,360,387,393,548,563,574,578],[174,175,177],"h2",{"id":176},"het-probleem","Het probleem",[179,180,181],"p",{},"De meeste Flutter-apps moeten taken draaien die een paar seconden duren — data ophalen bij een API, een bestand uploaden, een betaling verwerken. Tijdens dat wachten staart de gebruiker naar een bevroren scherm zonder enig teken dat er iets gebeurt. Hij tikt nog eens op de knop, veroorzaakt dubbele verzoeken, of denkt dat de app is gecrasht.",[179,183,184],{},"De gebruikelijke oplossing is de laadstatus met de hand beheren: een boolean omzetten, een spinner tonen, op de future wachten, de spinner verbergen, en dan het resultaat of de fout afhandelen. Die logica komt uiteindelijk in tientallen schermen terug, elke keer net iets anders.",[179,186,187],{},"Veelvoorkomende pijnpunten:",[189,190,191,195,198,201],"ul",{},[192,193,194],"li",{},"Standaardwerk voor laadstatusbeheer dat in elk scherm wordt herhaald",[192,196,197],{},"Gebruikers die meerdere keren op knoppen tikken omdat er geen visuele terugkoppeling is",[192,199,200],{},"Weggeklikte dialogen die verweesde futures op de achtergrond laten doorlopen",[192,202,203],{},"Ongelijke foutafhandeling — sommige schermen vangen excepties af, andere crashen stilletjes",[174,205,207],{"id":206},"hoe-flutter_future_progress_dialog-dat-oplost","Hoe flutter_future_progress_dialog dat oplost",[179,209,210,214,215,218,219,222],{},[211,212,213],"code",{},"flutter_future_progress_dialog"," vervangt al dat standaardwerk door één functieaanroep. Geef je asynchrone taak mee, en het pakket toont een voortgangsdialoog die niet is weg te klikken, wacht op het resultaat, sluit de dialoog, en geeft je een typeveilig resultaat terug — ",[211,216,217],{},"Success"," met de waarde of ",[211,220,221],{},"Failure"," met de fout.",[179,224,225],{},[226,227],"img",{"alt":228,"src":229,"style":230},"Demo van de Flutter-voortgangsdialoog op een iPhone","\u002Fopen-source\u002Fflutter-progress-dialog\u002Fflutter_progress_dialog.gif","max-height: 600px; height: auto; width: auto;",[179,232,233],{},"Foutafhandeling zit in het resultaattype ingebouwd, dus je vergeet nooit een exceptie af te vangen.",[174,235,237],{"id":236},"wat-het-ondersteunt","Wat het ondersteunt",[189,239,240,251,260,269,279,300],{},[192,241,242,246,247,250],{},[243,244,245],"strong",{},"Material-dialoog"," — ",[211,248,249],{},"showProgressDialog"," toont een standaard ronde Material-voortgangsindicator",[192,252,253,246,256,259],{},[243,254,255],{},"Cupertino-dialoog",[211,257,258],{},"showCupertinoProgressDialog"," toont een activiteitsindicator in iOS-stijl",[192,261,262,246,265,268],{},[243,263,264],{},"Adaptieve dialoog",[211,266,267],{},"showAdaptiveProgressDialog"," kiest automatisch de juiste stijl voor het huidige platform",[192,270,271,274,275,278],{},[243,272,273],{},"Eigen dialoog-UI"," — geef een ",[211,276,277],{},"builder"," mee om de standaardindicator te vervangen door welke widget je ook nodig hebt",[192,280,281,246,284,287,288,290,291,293,294,290,297],{},[243,282,283],{},"Typeveilige resultaten",[211,285,286],{},"ProgressDialogResult\u003CT>"," is een sealed class met de varianten ",[211,289,217],{}," en ",[211,292,221],{},", met ondersteuning voor pattern matching en handige methodes als ",[211,295,296],{},"unwrap()",[211,298,299],{},"map()",[192,301,302,246,305,307],{},[243,303,304],{},"Fouten vastleggen",[211,306,221],{}," bevat zowel het foutobject als de stacktrace",[174,309,311],{"id":310},"toepassingen-in-de-praktijk","Toepassingen in de praktijk",[313,314,316],"h3",{"id":315},"betalingen-verwerken","Betalingen verwerken",[179,318,319,320,322],{},"Een afrekenscherm roept een betaaldienst aan. Zonder voortgangsdialoog tikken gebruikers opnieuw op \"Betalen\" als er niets lijkt te gebeuren — met dubbele afschrijvingen tot gevolg. Met ",[211,321,249],{}," blijft de dialoog in beeld en blokkeert hij interactie tot de betaaldienst antwoordt, waarna je met pattern matching bepaalt of je naar een bevestigings- of foutscherm navigeert.",[313,324,326],{"id":325},"bestanden-uploaden","Bestanden uploaden",[179,328,329,330,332],{},"Een documentscanner uploadt afbeeldingen naar een server. Bij trage verbindingen kan dat seconden duren. De upload in ",[211,331,267],{}," verpakken geeft gebruikers meteen visuele terugkoppeling en zorgt dat de dialoog bij het platform past — Material op Android, Cupertino op iOS.",[313,334,336],{"id":335},"formulieren-versturen","Formulieren versturen",[179,338,339,340,342,343,345],{},"Een formulier in meerdere stappen stuurt in de laatste stap data naar een backend. De voortgangsdialoog voorkomt dubbel versturen en geeft je een schoon ",[211,341,217],{},"\u002F",[211,344,221],{},"-resultaat om te bepalen of je een succesbericht of een inline foutmelding toont.",[313,347,349],{"id":348},"data-synchroniseren-op-de-achtergrond","Data synchroniseren op de achtergrond",[179,351,352],{},"Een CRM-app synchroniseert lokale wijzigingen met een server. Een eigen builder kan een laadanimatie in de huisstijl tonen in plaats van de standaardspinner, zodat de ervaring aansluit bij de rest van de app.",[174,354,356],{"id":355},"aan-de-slag","Aan de slag",[179,358,359],{},"Installeer het pakket:",[361,362,367],"pre",{"className":363,"code":364,"language":365,"meta":366,"style":366},"language-shell shiki shiki-themes material-theme-lighter github-light github-dark","flutter pub add flutter_future_progress_dialog\n","shell","",[211,368,369],{"__ignoreMap":366},[370,371,374,377,381,384],"span",{"class":372,"line":373},"line",1,[370,375,41],{"class":376},"sbgvK",[370,378,380],{"class":379},"s_sjI"," pub",[370,382,383],{"class":379}," add",[370,385,386],{"class":379}," flutter_future_progress_dialog\n",[179,388,389,390,392],{},"Roep daarna ",[211,391,249],{}," aan met je asynchrone taak:",[361,394,397],{"className":395,"code":396,"language":18,"meta":366,"style":366},"language-dart shiki shiki-themes material-theme-lighter github-light github-dark","final result = await showProgressDialog(\n  context: context,\n  future: () => fetchData(),\n);\n\nswitch (result) {\n  case Success(:final value):\n    \u002F\u002F Gebruik de waarde\n  case Failure(:final error):\n    \u002F\u002F Handel de fout af\n}\n",[211,398,399,424,440,462,471,478,487,510,517,536,542],{"__ignoreMap":366},[370,400,401,405,409,413,417,421],{"class":372,"line":373},[370,402,404],{"class":403},"sbsja","final",[370,406,408],{"class":407},"su5hD"," result ",[370,410,412],{"class":411},"smGrS","=",[370,414,416],{"class":415},"sVHd0"," await",[370,418,420],{"class":419},"sGLFI"," showProgressDialog",[370,422,423],{"class":407},"(\n",[370,425,427,430,433,436],{"class":372,"line":426},2,[370,428,429],{"class":407},"  context",[370,431,432],{"class":411},":",[370,434,435],{"class":407}," context",[370,437,439],{"class":438},"sP7_E",",\n",[370,441,443,446,448,451,454,457,460],{"class":372,"line":442},3,[370,444,445],{"class":407},"  future",[370,447,432],{"class":411},[370,449,450],{"class":407}," () ",[370,452,453],{"class":411},"=>",[370,455,456],{"class":419}," fetchData",[370,458,459],{"class":407},"()",[370,461,439],{"class":438},[370,463,465,468],{"class":372,"line":464},4,[370,466,467],{"class":407},")",[370,469,470],{"class":438},";\n",[370,472,474],{"class":372,"line":473},5,[370,475,477],{"emptyLinePlaceholder":476},true,"\n",[370,479,481,484],{"class":372,"line":480},6,[370,482,483],{"class":415},"switch",[370,485,486],{"class":407}," (result) {\n",[370,488,490,493,497,500,502,504,507],{"class":372,"line":489},7,[370,491,492],{"class":415},"  case",[370,494,496],{"class":495},"sZMiF"," Success",[370,498,499],{"class":407},"(",[370,501,432],{"class":411},[370,503,404],{"class":403},[370,505,506],{"class":407}," value)",[370,508,509],{"class":411},":\n",[370,511,513],{"class":372,"line":512},8,[370,514,516],{"class":515},"sutJx","    \u002F\u002F Gebruik de waarde\n",[370,518,520,522,525,527,529,531,534],{"class":372,"line":519},9,[370,521,492],{"class":415},[370,523,524],{"class":495}," Failure",[370,526,499],{"class":407},[370,528,432],{"class":411},[370,530,404],{"class":403},[370,532,533],{"class":407}," error)",[370,535,509],{"class":411},[370,537,539],{"class":372,"line":538},10,[370,540,541],{"class":515},"    \u002F\u002F Handel de fout af\n",[370,543,545],{"class":372,"line":544},11,[370,546,547],{"class":407},"}\n",[179,549,550,551,553,554,556,557,559,560,562],{},"Er zijn drie dialoogfuncties beschikbaar: ",[211,552,249],{}," (Material), ",[211,555,258],{}," (Cupertino) en ",[211,558,267],{}," (automatisch per platform). Alle drie accepteren een optionele ",[211,561,277],{},"-parameter voor een eigen UI.",[179,564,565,566,573],{},"Een compleet werkend voorbeeld staat in de ",[567,568,572],"a",{"href":569,"rel":570},"https:\u002F\u002Fgithub.com\u002Fnerdy-pro\u002Fflutter-progress-dialog\u002Ftree\u002Fmain\u002Fexample",[571],"nofollow","voorbeeldmap",".",[575,576],"questions",{":items":577},"[{\"title\":\"Kan de gebruiker de dialoog zelf wegklikken?\",\"text\":\"Nee. De dialoog is standaard niet weg te klikken, wat verweesde futures en dubbel versturen voorkomt. De dialoog sluit vanzelf zodra de asynchrone taak klaar is.\"},{\"title\":\"Wat gebeurt er als de future een exceptie werpt?\",\"text\":\"De dialoog sluit en het resultaat komt terug als een Failure met de fout en de stacktrace. Je code kan met pattern matching op het resultaat fouten afhandelen zonder try-catch-blokken.\"},{\"title\":\"Werkt het op zowel Android als iOS?\",\"text\":\"Ja. Gebruik showProgressDialog voor Material-stijl, showCupertinoProgressDialog voor iOS-stijl, of showAdaptiveProgressDialog om automatisch bij het platform aan te sluiten.\"},{\"title\":\"Kan ik de laadindicator aanpassen?\",\"text\":\"Ja. Geef een builder-parameter mee aan elk van de drie dialoogfuncties om de standaardvoortgangsindicator te vervangen door je eigen widget — een animatie in de huisstijl, een bericht, of welke andere Flutter-widget dan ook.\"},{\"title\":\"Hoe werkt het resultaattype?\",\"text\":\"ProgressDialogResult\u003CT> is een sealed class met twee varianten: Success\u003CT> met de teruggegeven waarde, en Failure\u003CT> met de fout en de stacktrace. Je kunt pattern matching van Dart gebruiken, of handige methodes als isSuccess, isError, unwrap() en map().\"}]",[579,580,581],"style",{},"html pre.shiki code .sbgvK, html code.shiki .sbgvK{--shiki-light:#E2931D;--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .s_sjI, html code.shiki .s_sjI{--shiki-light:#91B859;--shiki-default:#032F62;--shiki-dark:#9ECBFF}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 .sbsja, html code.shiki .sbsja{--shiki-light:#9C3EDA;--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .su5hD, html code.shiki .su5hD{--shiki-light:#90A4AE;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .smGrS, html code.shiki .smGrS{--shiki-light:#39ADB5;--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sVHd0, html code.shiki .sVHd0{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#D73A49;--shiki-default-font-style:inherit;--shiki-dark:#F97583;--shiki-dark-font-style:inherit}html pre.shiki code .sGLFI, html code.shiki .sGLFI{--shiki-light:#6182B8;--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sP7_E, html code.shiki .sP7_E{--shiki-light:#39ADB5;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sZMiF, html code.shiki .sZMiF{--shiki-light:#E2931D;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sutJx, html code.shiki .sutJx{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#6A737D;--shiki-default-font-style:inherit;--shiki-dark:#6A737D;--shiki-dark-font-style:inherit}",{"title":366,"searchDepth":426,"depth":426,"links":583},[584,585,586,587,593],{"id":176,"depth":426,"text":177},{"id":206,"depth":426,"text":207},{"id":236,"depth":426,"text":237},{"id":310,"depth":426,"text":311,"children":588},[589,590,591,592],{"id":315,"depth":442,"text":316},{"id":325,"depth":442,"text":326},{"id":335,"depth":442,"text":336},{"id":348,"depth":442,"text":349},{"id":355,"depth":426,"text":356},"Een Flutter-pakket dat tijdens asynchrone bewerkingen een voortgangsdialoog toont en het resultaat teruggeeft — met Material-, Cupertino- en adaptieve stijlen ingebouwd.","md",[597],{"type":598,"url":599},"pub_dev","https:\u002F\u002Fpub.dev\u002Fpackages\u002Fflutter_future_progress_dialog",{},"Een licht Flutter-pakket dat tijdens asynchroon werk een voortgangsdialoog toont en het resultaat teruggeeft — met Material-, Cupertino- en adaptieve stijlen.","Flutter-voortgangsdialoog voor asynchrone taken","Wacht op het werk, toon de dialoog, krijg het resultaat terug. Een klein Flutter-pakket voor de voortgangsindicator die je steeds opnieuw met de hand schrijft.","\u002Fopen-source\u002Fflutter-progress-dialog",{"type":606,"company":607,"name":608},"github","nerdy-pro","flutter-progress-dialog",{"title":169,"description":594},"open-source\u002Fflutter-progress-dialog",[41,18],"2026-03-17","gpPmlZiyXDDpR_uK-6NdJBgTKcMqx9xF8-YLZ0UlKU8",{"forks":615,"stars":426,"contributors":616,"last_release":627,"issues":615,"has_contribution_guide":628,"license":629,"last_updated":630,"watchers":426},0,[617,622],{"login":618,"profile_url":619,"avatar_url":620,"contributions":621},"thenixan","https:\u002F\u002Fgithub.com\u002Fthenixan","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F3602098?v=4",100,{"login":623,"profile_url":624,"avatar_url":625,"contributions":626},"OleksandrFedyay","https:\u002F\u002Fgithub.com\u002FOleksandrFedyay","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F17413471?v=4",33,"v2.0.0",false,"MIT","2026-08-19T17:15:57Z"]