[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"technologies":3,"\u002Fopen-source\u002Fflutter-number-editing-controller":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":824,"extension":825,"links":826,"meta":830,"metaDescription":831,"metaTitle":831,"navigation":676,"ogDescription":832,"path":833,"repository":834,"seo":838,"slug":839,"stem":840,"technologies":841,"updated":842,"__hash__":843,"stats":844},"open_source_nl\u002Fopen-source\u002Fflutter-number-editing-controller.md","Flutter Number Editing Controller",{"type":171,"value":172,"toc":811},"minimark",[173,178,195,198,214,218,231,246,254,258,328,332,337,347,351,367,373,377,386,390,397,401,558,562,565,592,595,601,778,793,803,807],[174,175,177],"h2",{"id":176},"het-probleem","Het probleem",[179,180,181,182,186,187,190,191,194],"p",{},"De ingebouwde ",[183,184,185],"code",{},"TextEditingController"," van Flutter behandelt getallen als platte tekst. Typt een gebruiker ",[183,188,189],{},"1000000"," in een prijsveld, dan ziet hij precies dat — een onleesbare muur van cijfers. Geen groepering, geen decimale opmaak, geen valutasymbool. Developers blijven achter met eigen ",[183,192,193],{},"TextInputFormatter","-logica, handmatig ontleden van tekenreeksen en geworstel met de cursorpositie telkens als de opmaak de tekstlengte verandert.",[179,196,197],{},"Veelvoorkomende problemen:",[199,200,201,205,208,211],"ul",{},[202,203,204],"li",{},"Gebruikers lezen grote getallen verkeerd zonder scheiding van duizendtallen",[202,206,207],{},"Valutavelden die de conventies van de taalregio negeren (plaats van het symbool, komma of punt)",[202,209,210],{},"Broze ontleedcode die stukgaat zodra de opgemaakte tekst niet-cijfers bevat",[202,212,213],{},"Een cursor die na elke toetsaanslag naar een onverwachte plek springt",[174,215,217],{"id":216},"hoe-number_editing_controller-dat-oplost","Hoe number_editing_controller dat oplost",[179,219,220,223,224,226,227,230],{},[183,221,222],{},"number_editing_controller"," is een directe vervanger voor ",[183,225,185],{},". Wijs hem toe aan een willekeurig ",[183,228,229],{},"TextField"," en hij regelt opmaak, ontleden en cursorbeheer vanzelf.",[179,232,233,234,237,238,241,242,245],{},"De gebruiker ziet netjes opgemaakte tekst als ",[183,235,236],{},"$1,234.56"," of ",[183,239,240],{},"1.234,56 €",", terwijl jouw code de schone numerieke waarde uitleest via ",[183,243,244],{},"controller.number",".",[179,247,248],{},[249,250],"img",{"alt":251,"src":252,"style":253},"Demo van valuta-opmaak","\u002Fopen-source\u002Fnumber-editing-controller\u002Fcurrency.gif","max-height: 600px; height: auto; width: auto;",[174,255,257],{"id":256},"wat-het-ondersteunt","Wat het ondersteunt",[199,259,260,275,281,287,303,313,319],{},[202,261,262,266,267,270,271,274],{},[263,264,265],"strong",{},"Opmaak van hele getallen"," — groepeert cijfers met de scheidingstekens van de taalregio (",[183,268,269],{},"1,000,000"," in het Engels, ",[183,272,273],{},"1.000.000"," in het Duits)",[202,276,277,280],{},[263,278,279],{},"Decimale opmaak"," — instelbaar minimum en maximum aantal decimalen",[202,282,283,286],{},[263,284,285],{},"Valuta-opmaak"," — plaatst het valutasymbool vóór of na het getal volgens de regels van de taalregio",[202,288,289,292,293,296,297,299,300],{},[263,290,291],{},"Bewust van taalregio's"," — gebruikt ICU-opmaakpatronen, zodat ",[183,294,295],{},"1234.56"," in USD in het Engels als ",[183,298,236],{}," verschijnt en in het Duits als ",[183,301,302],{},"1.234,56 $",[202,304,305,308,309,312],{},[263,306,307],{},"Negatieve getallen"," — optionele ",[183,310,311],{},"allowNegative","-vlag om invoer tot positieve waarden te beperken",[202,314,315,318],{},[263,316,317],{},"Wijzigen tijdens het draaien"," — wissel van taalregio, valuta of precisie terwijl de app draait, zonder de controller opnieuw te maken",[202,320,321,324,325,327],{},[263,322,323],{},"Extern valutasymbool"," — toon het symbool als voor- of achtervoegsel in de ",[183,326,229],{},"-decoratie in plaats van in de tekst zelf",[174,329,331],{"id":330},"toepassingen-in-de-praktijk","Toepassingen in de praktijk",[333,334,336],"h3",{"id":335},"afrekenen-in-een-webwinkel","Afrekenen in een webwinkel",[179,338,339,340,342,343,346],{},"Een betaalformulier moet bedragen in meerdere valuta aannemen. Met ",[183,341,222],{}," maak je één valutacontroller en wijzig je ",[183,344,345],{},"currencyName"," zodra de gebruiker een andere valuta kiest. Het veld maakt zichzelf direct opnieuw op — zonder herbouw.",[333,348,350],{"id":349},"financiële-apps-voor-meerdere-taalregios","Financiële apps voor meerdere taalregio's",[179,352,353,354,356,357,356,359,362,363,366],{},"Een bankapp die gebruikers in de VS, Duitsland en Japan bedient, heeft per regio eigen conventies nodig: ",[183,355,236],{}," tegenover ",[183,358,240],{},[183,360,361],{},"¥1,500",". De controller regelt dat allemaal via één ",[183,364,365],{},"locale","-parameter.",[179,368,369],{},[249,370],{"alt":371,"src":372,"style":253},"Demo van opmaak van hele getallen","\u002Fopen-source\u002Fnumber-editing-controller\u002Finteger.gif",[333,374,376],{"id":375},"velden-voor-voorraad-en-aantallen","Velden voor voorraad en aantallen",[179,378,379,380,382,383,385],{},"Magazijnapps werken met grote hele aantallen. De integer-controller maakt van ",[183,381,189],{}," netjes ",[183,384,269],{},", waardoor invoerfouten meteen opvallen.",[333,387,389],{"id":388},"analysedashboards","Analysedashboards",[179,391,392,393,396],{},"Decimale controllers met instelbare precisie laten je meetwaarden opmaken — percentages met 2 cijfers, wetenschappelijke metingen met 4 — terwijl de ruwe ",[183,394,395],{},"num","-waarde beschikbaar blijft om mee te rekenen.",[174,398,400],{"id":399},"voorbeelden-van-opmaak-per-taalregio","Voorbeelden van opmaak per taalregio",[402,403,404,423],"table",{},[405,406,407],"thead",{},[408,409,410,414,417,420],"tr",{},[411,412,413],"th",{},"Taalregio",[411,415,416],{},"Type",[411,418,419],{},"Ruwe waarde",[411,421,422],{},"Weergegeven",[424,425,426,445,463,481,500,520,539],"tbody",{},[408,427,428,434,437,441],{},[429,430,431],"td",{},[183,432,433],{},"en",[429,435,436],{},"Valuta (USD)",[429,438,439],{},[183,440,295],{},[429,442,443],{},[183,444,236],{},[408,446,447,452,455,459],{},[429,448,449],{},[183,450,451],{},"de",[429,453,454],{},"Valuta (EUR)",[429,456,457],{},[183,458,295],{},[429,460,461],{},[183,462,240],{},[408,464,465,470,472,476],{},[429,466,467],{},[183,468,469],{},"fr",[429,471,454],{},[429,473,474],{},[183,475,295],{},[429,477,478],{},[183,479,480],{},"1 234,56 €",[408,482,483,488,491,496],{},[429,484,485],{},[183,486,487],{},"ja",[429,489,490],{},"Valuta (JPY)",[429,492,493],{},[183,494,495],{},"1500",[429,497,498],{},[183,499,361],{},[408,501,502,507,510,515],{},[429,503,504],{},[183,505,506],{},"ru",[429,508,509],{},"Valuta (RUB)",[429,511,512],{},[183,513,514],{},"500",[429,516,517],{},[183,518,519],{},"500 ₽",[408,521,522,526,529,534],{},[429,523,524],{},[183,525,433],{},[429,527,528],{},"Heel getal",[429,530,531],{},[183,532,533],{},"1234567",[429,535,536],{},[183,537,538],{},"1,234,567",[408,540,541,545,548,553],{},[429,542,543],{},[183,544,451],{},[429,546,547],{},"Decimaal (max 2)",[429,549,550],{},[183,551,552],{},"1234.89",[429,554,555],{},[183,556,557],{},"1.234,89",[174,559,561],{"id":560},"aan-de-slag","Aan de slag",[179,563,564],{},"Installeer het pakket:",[566,567,572],"pre",{"className":568,"code":569,"language":570,"meta":571,"style":571},"language-shell shiki shiki-themes material-theme-lighter github-light github-dark","flutter pub add number_editing_controller\n","shell","",[183,573,574],{"__ignoreMap":571},[575,576,579,582,586,589],"span",{"class":577,"line":578},"line",1,[575,580,41],{"class":581},"sbgvK",[575,583,585],{"class":584},"s_sjI"," pub",[575,587,588],{"class":584}," add",[575,590,591],{"class":584}," number_editing_controller\n",[179,593,594],{},"Vereist Flutter 3.19+ en Dart 3.3+.",[179,596,597,598,600],{},"Maak vervolgens een controller en wijs hem toe aan je ",[183,599,229],{},":",[566,602,605],{"className":603,"code":604,"language":18,"meta":571,"style":571},"language-dart shiki shiki-themes material-theme-lighter github-light github-dark","final controller = NumberEditingTextController.currency(\n  currencyName: 'USD',\n  locale: 'en',\n);\n\nTextField(\n  controller: controller,\n  keyboardType: TextInputType.numberWithOptions(decimal: true, signed: true),\n)\n\n\u002F\u002F Lees de numerieke waarde op elk moment\nfinal amount = controller.number; \u002F\u002F e.g. 1234.56\n",[183,606,607,635,649,662,671,678,685,698,737,743,748,755],{"__ignoreMap":571},[575,608,609,613,617,621,625,628,632],{"class":577,"line":578},[575,610,612],{"class":611},"sbsja","final",[575,614,616],{"class":615},"su5hD"," controller ",[575,618,620],{"class":619},"smGrS","=",[575,622,624],{"class":623},"sZMiF"," NumberEditingTextController",[575,626,245],{"class":627},"sP7_E",[575,629,631],{"class":630},"sGLFI","currency",[575,633,634],{"class":615},"(\n",[575,636,638,641,643,646],{"class":577,"line":637},2,[575,639,640],{"class":615},"  currencyName",[575,642,600],{"class":619},[575,644,645],{"class":584}," 'USD'",[575,647,648],{"class":627},",\n",[575,650,652,655,657,660],{"class":577,"line":651},3,[575,653,654],{"class":615},"  locale",[575,656,600],{"class":619},[575,658,659],{"class":584}," 'en'",[575,661,648],{"class":627},[575,663,665,668],{"class":577,"line":664},4,[575,666,667],{"class":615},")",[575,669,670],{"class":627},";\n",[575,672,674],{"class":577,"line":673},5,[575,675,677],{"emptyLinePlaceholder":676},true,"\n",[575,679,681,683],{"class":577,"line":680},6,[575,682,229],{"class":623},[575,684,634],{"class":615},[575,686,688,691,693,696],{"class":577,"line":687},7,[575,689,690],{"class":615},"  controller",[575,692,600],{"class":619},[575,694,695],{"class":615}," controller",[575,697,648],{"class":627},[575,699,701,704,706,709,711,714,717,719,723,726,729,731,733,735],{"class":577,"line":700},8,[575,702,703],{"class":615},"  keyboardType",[575,705,600],{"class":619},[575,707,708],{"class":623}," TextInputType",[575,710,245],{"class":627},[575,712,713],{"class":630},"numberWithOptions",[575,715,716],{"class":615},"(decimal",[575,718,600],{"class":619},[575,720,722],{"class":721},"s39Yj"," true",[575,724,725],{"class":627},",",[575,727,728],{"class":615}," signed",[575,730,600],{"class":619},[575,732,722],{"class":721},[575,734,667],{"class":615},[575,736,648],{"class":627},[575,738,740],{"class":577,"line":739},9,[575,741,742],{"class":615},")\n",[575,744,746],{"class":577,"line":745},10,[575,747,677],{"emptyLinePlaceholder":676},[575,749,751],{"class":577,"line":750},11,[575,752,754],{"class":753},"sutJx","\u002F\u002F Lees de numerieke waarde op elk moment\n",[575,756,758,760,763,765,767,769,772,775],{"class":577,"line":757},12,[575,759,612],{"class":611},[575,761,762],{"class":615}," amount ",[575,764,620],{"class":619},[575,766,695],{"class":615},[575,768,245],{"class":627},[575,770,771],{"class":615},"number",[575,773,774],{"class":627},";",[575,776,777],{"class":753}," \u002F\u002F e.g. 1234.56\n",[179,779,780,781,784,785,788,789,792],{},"Er zijn drie soorten controllers beschikbaar: ",[183,782,783],{},".integer()",", ",[183,786,787],{},".decimal()"," en ",[183,790,791],{},".currency()",". Alle opties — taalregio, scheidingstekens, valuta, precisie — zijn tijdens het draaien te wijzigen zonder de controller opnieuw te maken.",[179,794,795,796,245],{},"Een compleet werkend voorbeeld met een valutakiezer, een taalregiokiezer en een extern geplaatst symbool staat in de ",[797,798,802],"a",{"href":799,"rel":800},"https:\u002F\u002Fgithub.com\u002Fnerdy-pro\u002Fflutter_number_editing_controller\u002Ftree\u002Fmain\u002Fexample",[801],"nofollow","voorbeeldmap",[804,805],"questions",{":items":806},"[{\"title\":\"Werkt het met Flutter web?\",\"text\":\"Ja, maar JavaScript stelt alle getallen voor als 64-bits drijvendekommagetallen, dus hele getallen boven 2^53 - 1 (ongeveer 9 biljard) verliezen stilzwijgend precisie. Op native platforms worden 64-bits gehele getallen volledig ondersteund.\"},{\"title\":\"Kan ik de valuta of taalregio wijzigen nadat de controller is gemaakt?\",\"text\":\"Ja. Alle opmaakopties zijn tijdens het draaien te wijzigen. Taalregio, valutanaam, scheidingstekens of precisie aanpassen maakt de getoonde tekst direct opnieuw op, zonder de controller opnieuw te maken.\"},{\"title\":\"Ondersteunt het Indiase nummering (lakh\u002Fcrore)?\",\"text\":\"Nog niet. De bibliotheek gebruikt gelijke groepsgroottes afgeleid uit ICU-patronen per taalregio (meestal groepen van 3). Groeperingssystemen met wisselende breedte, zoals de Indiase nummering, worden niet ondersteund.\"},{\"title\":\"Hoe toon ik het valutasymbool buiten het tekstveld?\",\"text\":\"Zet showCurrencySymbol op false en gebruik de eigenschappen resolvedCurrencySymbol en currencySymbolPosition om het symbool als voor- of achtervoegsel in de TextField-decoratie te plaatsen.\"},{\"title\":\"Wat gebeurt er bij heel lange getallen?\",\"text\":\"De decimale precisie is begrensd op 20 cijfers achter de komma (de limiet van toStringAsFixed in Dart). Uitzonderlijk lange invoer kan de opmaakprestaties verslechteren, maar gangbare financiële en zakelijke waarden worden zonder problemen verwerkt.\"}]",[808,809,810],"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 .sZMiF, html code.shiki .sZMiF{--shiki-light:#E2931D;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sP7_E, html code.shiki .sP7_E{--shiki-light:#39ADB5;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sGLFI, html code.shiki .sGLFI{--shiki-light:#6182B8;--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .s39Yj, html code.shiki .s39Yj{--shiki-light:#39ADB5;--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":571,"searchDepth":637,"depth":637,"links":812},[813,814,815,816,822,823],{"id":176,"depth":637,"text":177},{"id":216,"depth":637,"text":217},{"id":256,"depth":637,"text":257},{"id":330,"depth":637,"text":331,"children":817},[818,819,820,821],{"id":335,"depth":651,"text":336},{"id":349,"depth":651,"text":350},{"id":375,"depth":651,"text":376},{"id":388,"depth":651,"text":389},{"id":399,"depth":637,"text":400},{"id":560,"depth":637,"text":561},"Een TextEditingController die getallen, decimalen en valuta opmaakt terwijl de gebruiker typt — met volledige ondersteuning voor taalregio's.","md",[827],{"type":828,"url":829},"pub_dev","https:\u002F\u002Fpub.dev\u002Fpackages\u002Fnumber_editing_controller",{},null,"Een TextEditingController die getallen, decimalen en valuta opmaakt terwijl de gebruiker typt, in welke taalregio hij ook zit.","\u002Fopen-source\u002Fflutter-number-editing-controller",{"type":835,"company":836,"name":837},"github","nerdy-pro","flutter_number_editing_controller",{"title":169,"description":824},"flutter-number-editing-controller","open-source\u002Fflutter-number-editing-controller",[41,18],"2026-03-17","9CKgzbqMohZS2ywQujHGHVKo8ykBlpcfsn1I_FBCYkc",{"forks":673,"stars":651,"contributors":845,"last_release":855,"issues":856,"has_contribution_guide":857,"license":858,"last_updated":859,"watchers":651},[846,851],{"login":847,"profile_url":848,"avatar_url":849,"contributions":850},"thenixan","https:\u002F\u002Fgithub.com\u002Fthenixan","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F3602098?v=4",94,{"login":852,"profile_url":853,"avatar_url":854,"contributions":578},"maurovanetti","https:\u002F\u002Fgithub.com\u002Fmaurovanetti","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F402070?v=4","v2.1.0",0,false,"BSD-3-Clause","2026-03-17T10:44:29Z"]