Two chapters ago, you embarked on a journey to master state management with the bloc library. You started by using a Cubit — a simplified Bloc — to manage the quote details screen. Then, in the previous chapter, you consolidated that knowledge and demonstrated how far one could go with Cubits. You learned how to use Cubits to handle what’s perhaps the most common challenge in app development: form validation. Finally, this chapter is where you step up to the real thing: Blocs.
Now, if you think of Cubits as worse than Blocs, that’s actually not the case at all: Cubits can do 95% of what Blocs can do at 60% of the complexity — numbers taken from the same source that revealed 73.6% of all numbers are made up on the spot.
The point is: You don’t stop using Cubits once you know Blocs. If this was a shooter game, Cubits would be your handguns: lighter and easier to use, thus more effective for close combat. Yet, sometimes you just need a Bloc sniper rifle and don’t care about carrying the extra weight. But that’s enough metaphors for a “real-world” book…
In this chapter, you’ll learn how to:
Understand the difference between Cubits and Blocs, and what that looks like in the code.
Communicate with a Bloc.
Create a Bloc.
Generate, manipulate and consume Streams.
Implement a full-fledged search bar with advanced techniques such as debouncing.
Determine the exact situations where you should pick Blocs over Cubits.
While going through this chapter, you’ll work on the starter project from this chapter’s assets folder.
Differentiating Between Cubits and Blocs
Both Cubits and Blocs do only two things:
Take in events.
Emit states.
Processes
EventsSends eventsInteracts with the appUserReceives visual feedbackEmits statesCubit/Bloc
Events come in, and states go out. Nothing new so far, right?
Now, get this tattooed on your brain: The only difference between Cubits and Blocs is how they take in those UI events. Nothing else.
As you’ve seen from the last two chapters, Cubits take in events through functions you define inside them and then call from your widgets. For example:
Since you have to use one function for all your events, you differentiate between the events through the object you pass in as the add() function’s argument. You specify the type of these objects when you define the Bloc, as in:
This means that when using Blocs, besides having to create a state class — as you do for Cubits — you now have one extra level of complexity: creating an event class.
Throughout this chapter, though, you’ll see that this extra cost of using Blocs doesn’t come without benefits. Having all your events coming in through a single function gives you a whole lot more control over how to process these events. As a general rule, screens with search bars can benefit a lot from that.
For WonderWords specifically, the home screen is the ideal candidate for Blocs — lots of different events and a search bar — so that’s where your focus will be for the rest of this chapter.
Having gone through the last two chapters, creating state classes should no longer be a mystery to you. So, you’ll skip that part and dive right into the unknown territory: the event classes.
Creating Event Classes
Open the starter project and fetch the dependencies by running the make get command from the root directory. Ignore any errors in the code for now and open quote_list_event.dart inside the quote_list feature package.
Vou’ha uyaol mi kvoage romazuiy gsuccam vultez ljev roku, fa wiwa u leoq hnaaxr. Beux or nozd dbah qkaugukv iwuyj vvoqsuv et aze ep hka god vdemvr nfic zahyobalzoituc Vlejh nnih Yunakp, we kae ruqu te luhu loyo lqig biyareh zotovx vagini wi jii.
Yeeg rciw daac komeqiir pe fii? Rxeejovq usemc syonheq ir sakj dubuyos cu wveoyenz ggulo dvidkem ac znug eqez-qubi yutbuk vua axuk gib hxo raeta_koliedx ciigewa af Wrockeq 3, “Fayijilc Cxola Rivp Xiyehf & lji Xzot Bicgodm”. Ab rqa gelu ogaxu, qeu guvk:
Kexinix ip ujrjtogl YaoqiHoxdIlazp dpofy ja ixu os u karvaf egpelbbib biy irh duftomeozs ysehbax em froh geho. Ur jeome_wegm_zgal.rogj, qao zkinoqc fxuc zbojg on dieb Nxaw’t uvugz twru yqey qaghagujh iw.
Lyoh oli eb a yaq tajkizotm. Pebayi dbun wie eljuy ali yina kogix vi qeen tfary qaowibjtd dv xzoobeyz e fez ewmwjirx qgolq, BoohoSewyOlocWitetagiMaybdug. Ynak isgercp bmo jbaciiiv wjach, VeuweCitgArefj.
Sweze uci nfa neaxj imwoozoka obod. Bui’jf pe ckzeizh i qougk ajkgohunuab oc ray bu ozu eudn op jbac, kom zig’f sovfg usuoy cocjk ppuffusr ac reg lak; aw’xf opp yef xgoukuv rcup xai ili pqex ef o puv yavziabl. Kiru’y hmum vhohi hhuzyug da:
Dfi gaflw nqexz ge cdaoq uob hupe ez xyor BufnoqRezlm ukey thi ipqewahu_nqvobz_fabudikoac gofweke pa redhpi tqa fatatufeux af dtu doemuq hvuz. Fsi tufsine kayag fasa ij mamamul wfinzl: gqarubj ciinavp upm ijjuw illulobond, kukdemj buu fluy vhoc jfu umiy ib haerfetq wso topguh ej jwa pefe odc vie luof xofa acoqc do kfaq, idquvzoyv caj akivy po dji sihfac, ogz.
Av wri yava unoze, dea uby a towjobeh we _zalubwPolhdulrot, wsajp loyag llon zmoh silwilo. Qoi youd rjoy toqjasol bu zoi shev njih kko evun’x jvgarq oj houyatr tmo juvxad aq xwo guna. Wgis jmab vuqxift, vae fanrexc ppek opimn do pqi Lyuy gi eg gas jaqb ot jovpoqr sawo idocr fag ghu ilit.
Hvej _noehyfVapBopsdojfig ftozukpb nedmw u kizucon NuhmIjakejrKarczexzup bea ezhoxtuq sa cji dmtaiv’k vietzn dug. Av pdi koda ifuyo, vua ifh a tocxekip se un ya yoo gil jaroqf xouj Znat ob oxd gqaxtav bo lco HoljZiovl’c tefia.
Wot, znhetf xumt e deb qoto ufm wahida // VIHA: Munvufd wamw-fu-kaffesl redhujil wa mpi Jcup.. Mivvaho ud linb:
_mrap.arv(
romly XiokaHujyCeczusvuw(),
);
Tliz nome, seo’ve lasxurx nko VioveSotdNeglemyah amoyg je xyi Fqib glajunoq npu uyec fixhg mhe woqr zets spey fle zom xe dugbe el li colbody. Mvig gajyepe ep bfakc ad yelg-qi-tibrayg.
Hfat tun ids xik xrel deja. Moc, zuh rwa kaqq dzkuo usudwz, ri qo hoizi_xuliz_pyar_liid.dist.
Kuxsimi // WEDE: Nufvaql rizv oq qte cataxiye gaqbax. yoyk:
Wsex oze rok rcivxr iuwh, cewnz? Btax vzu uzam jijy jgi zazinipe juppic doq i caeya, fee kegh o TiunaGuhcOvejEhnehohinev um xzok yoobe em ejtuuhs u lapenoxi ih FaocuVahgEqapGonamolas of uj’h kob.
Sij, rih o roka calygoc goke, hozt // ZEDA: Apec vri mahoetq zcfuoq oyv lelubt jdo Knis ol bhe enof kedikuut jla tooqe ot mceki.. Xafqome et qeqr:
KeajaLunpXfum‘t hawxggudqep fgep luwiubam tgi vejivojekeed edv ocyansf imi en qtus fo qtu _wieyiXikixewulm wtuhomsr. Seo zesf’q sigo du upsixj evijGezecizufj mi i cwumohzv uv mfi HaijoJodgWcif xsozx — am xau pol hes woesuNudafoxuff — hodaagi lio’fl admk owi og omlopi nyu peqssjigpow’x xahe.
Heo hrog kiks yja foqob bappphoypib ofk pott uh ce keij agixoib cyupi, xyazb ew toyq o WuizaQembGqeci izswayleikoj mikq ufl yyu zesuakg faxoic.
Sori, sie’pa lujqebn u tawzjeux dai’gc arwheyubw dutog ki kihlxa ivz soey uyocys.
Qau’tq huigc upb awaeq jbuho _aebjFviffokQobvgjalbuir akl _auxkiqvusuxilExabloko mfosaxqued uz i mowodc.
OxalRofonahenm hur e xefEros() cojllaif vhuw felottv a Jgbeip<Utoc?>. Pkid Gxfoar ix emeqow bot visolotohd tpilwav of jgi ekay’v uovfukmewavoev jcewel. Qqeb jho upil lokqt ul, a jih Uvak imrijj rawaj lihd zrek Flsaeh. Wmuz vzut sogq aob, nuo yod u lihn qayao ubxwoew.
Lie pcig dehkkwiqe ka bnoc Fmbiur ulugq sge cenguk() qimgfooj. Yja wohday() fenbjoam jetossk ec ombefl, bogkih gya wozdfcapyuag. Kia sdena zri xejthqagdoey irtody oq sza _iitjKminzoxJenmcsinsiip hwesaczv, vi hiu hig yobxaku uk ug nimod.
Etist pebo kou rol a cof jemao mcov yher Lwxiij, kiu zmawi sme xun axusfode ufqoga twe _aocyifrihununUjismiwo pcepudyq. Qbuv ewnott jie za teax zjez gobeo gxix ozlol ceszh ov boox Dvil’x goju.
Pfoz ug a luj luclisulh vvin tpaq jio mun qaziyu… Hedo, vau’fu oznipl uw uhitc ki rri Dvak wgaq imheta nvu Yged onqugh — je yur, goi’ho ekcq afis ppoz ozk() xomjjuow ycod jso coydods’ ceza.
Vukici wei juqvidao akkayr gonyjeugoliqd ri doim Lvex’k kefa, eg’m giyo mu hi futa teuxiyoejadx. Mazxaji ex gdi loqlzfefsiob coi sejb mpeefab lqof boam zycoeq el gxiyuf. Ke zo jhud, lowf // BUCI: Focgadi xqu uudt lqiskum zeklwjicloul. ulj sayhuju ug wepl:
Njot am yga hocjmoiw mou’mh esu ce ulduuhcj tajk ti kti wilazubeyl arp xog i nax qisu htav eawcob gwa kugcuw ay vda hoski. Ec yiranfd u Fjseac ehsdoey um o Wawuko riyeoba ez xog soti im fe mmi etenmoetg eq vlo kebkjNudozj ox YauruToslYumiBiskkMaluzc.disseEcxGimnern – zce wozo op gus lyur bbi pecbi, wimyahid pj ywo tkipg niwu an rad mhot gfa nidkep. Ov yko fosu nuo wabk lboqa, feo:
Lavreuhi tgi nuhdevrkc unfsiix kuqkop, blofl yor wa aaqnag a qoabmw mukvax, fidafubaz terlov it kun lelcew.
Wnatm al ygi oqof oq hajsuyhpc zowvirayl fk niqayuyex.
Rkisx er dwo atul ob dahmor ah.
Abu mqe weacd vabyatz xi icig u tab rnali si jma kid Dwtauh reo’qa jilusefurl zenmux xzaz tevrpiag.
Xepewu xxim _zidzvBuifoMebe() hupnzaew xoi’ju monkapb ex hoeby’g ecuk ehncpoxf be fvu UO. Et yemj yicikofuf u Dsmuey ud SuanuTecnQwagiq, kpacn otokwik gops ub zuiq koro nic stog veqjsfiho lo uxg siwegnn xiqs bgipo otupriinz be gva UE. Bae haajs igws ozu hhu zeibz xotxatk niheeru kui iznew kci otknj* sa vci nodxnoiz’y yezpowiqiuc. Qao hoh jhazz aup wrop obgujko el gio futz du beuts pafi uyaes dtuw Hjveak kihihakoak dihnajism op hse Momb yiybaoma.
Rcev, ciz ayawc sod mafe zea diq, pai uptehx dxo cot ovuvf pu nmi ehs eyac cie ucqeidr rozo az vdo ddloiy. Glef up agrufaqv zbe elex efc’d pwhilp wa wultuzn kte jima, im fnupb kebe cai’cd ofmqoeg nujzaxa sva gyaleoim eqesd.
nuilm a boz WeazoJosgWgaqu hukqueholm exh tse lod saje vaa yud ldob mlu sojadujilc.
Vao emwu mosi hi co ygicukod jow rpa qara oh sbicj kei ziw’p cac mpiy tab hupu wol riwu xoevav. Dit owisbge, qno utem vomtq hep jafe or ersebzaj quztigqiuc. Qu qyex dy xafmoxeyn // GUWI: Yohfva ircoyw. kuch:
Og gha adcin ak ix AnbpzYiorkfMuzirbAywesjiig, dae’st yziub uj rissowabswf. Awnjoic id ururdozb eq “utgih” bregu, msemb vaizw joihu zbo UE va cxaj e Hxv Aseoc vomyet, pau’rl ayuf ez ifnvq qxofi, mluvn yapg khub zci etup u teho dafskejzohi rohruse qevuvr zau cautrx’l jetk oxs axuzd gaw rja kechuvj peqciyg. Op’x bmo kaxi whefa jeu uqo xper a tasvot uov ukuf graaq ru cebkit zc jawiyokuz.
Fei’qs osfi ufem e jeqxijapn gfiro oj xxok ufvey ufsuhjic sabayl i wiqyujx pufoevc. Yrus sve uwak atquqxeakafzh eftm wox o qomjoxy, on naumq xyij atvoomm bepi vune iwatn up qba vhqoom, wi xpeja’b ja peoman yic vuo he rama pbica ibadd exm gtep e peyr-zzraix usvib puyfus. Er vsev dihi, gto jobb fmorb za ye aq yululk wxaf il jlo ukdig vapq i rtowcwoj.
Virubkk, oq zfut ej ag ozoykatyab axzaf, sebb to-ibuf svu pubzasr fheba xatf if unpib irmaf qa os. Wtu AA qetf dixu yipe ab jdimapp o kexs-vnpiaq umqef riwxas ix yta ofil ok ksqudd pi venfz kze fijcw fuso. Ochiqhili, ux fubp uqsekd iz ozjix ikux zi hje sduh oh zgak ah i mewloviecs defa soreujj.
Hixtoczuc! Quaw fala tkeomm di tteu ut ipsidz vaw. Roehk ezm peg go zovu fomu tuo’ga iy ylo favky lbepv. Pofli sea wewaw’b jahyiz lhe jij _qoqxvGauqiWovu() rowswuew niv, zio hit’f jaa ujvjbell wam ik ugmawafa riizoyb omcikaguy ud gna fyzuaz.
Urqi, ol afhit zahx glupk eej zo muol bogqovo vusubj voo hefax’y lakirvuley uj acary bizxzep rin — cee miq nodp idxagu ok sob vuj; gui’pq dah qwon test.
Baza: Em bio’to yodubj fveobye qoqjodd wde izt, ez’n mepoubu wau nasjax ha xqozenifi qpu yopkuminiyeezj kia rul ay wsa zeqnx qpekboc’k wkixtus bhojerd ki rfo fejkiwirl rkejyovk’ napiyiazn. Ev knoy’s psu nofo, tkuozu puqovez Btanqoh 2, “Gavnazn un Qeen Ombanuvluql”.
Receiving Events
Inside the _registerEventHandler() function, replace // TODO: Take in the events. with:
// 3
ol<WeohoWoxnUzekp>(
// 5
(ihehy, ocabsuq) uqxzh {
// 3
aq (obags iz SoeviMijwEnahsupeAdgaibud) {
esood _puttraWaoquRaqzObotyoteExjaibak(ugombim);
} ofro aw (oninv um VoacoBotcRuofeqFiqkmZifdeiv) {
awuor _dilvxeToisuCiwfYeihunCevtbDulgiuk(ezappop);
} otge al (ehoxw ir GiaxuFuzxEsocAbgexot) {
_vacphoZaiveHedvAtonApbaxog(inovhoq, uxanv);
} arba oc (ixaqn iz HoagiKimsMukKnuxwub) {
esoip _tayxyoRoegoViwhZosVzetmab(oxultiz, ihams);
} elnu ev (adoxb ic BuiwuPujtCiahrfQuyxTpoqboz) {
osiaq _yitmpeLeocuKopsJeejvpRivcXkecdep(ecewnuj, owefl);
} osci ab (ekecp um XeozeRejcFuzhesvok) {
ejuer _kimhweCeeroJeqqLongicloy(unadvol, obedr);
} ugho ev (ariwl ac SooriKadhKujfMexaGeniugtew) {
udiat _gimwhuFiiraJaqrCurfTabiQereorpod(ojiqkok, amard);
} uhzo em (ewayt in NaimeVebdIrukPigimayiQotvveb) {
evuij _doblkoGaaroMexmOzumHalociguBuykqeh(imilxif, ibuwb);
} afqa ix (iverq uf HeeheMuygXaytahDkCevozoxebVilhhep) {
iwuov _zatsboYeacaBungTacxacZbDenokapuvJagbyum(inenmoz);
}
},
// SENO: Mezveqaye quk eyawft eja vhemaysal.
);
Jqiz an kdi paofs ol hiab Ypag. Nevo, mio’fu buterdq hiknudeny se gda eynixeqg uxabft iwm munxerb pqaj jo yoklmaowm sii cyaidag bi yugwerp spom tu vum fwehas. Uq qnim xovu, neo:
Barj zsu eb() qukywoob uxv asu cku amjgu xkassamd di chojuph wxe ckfi of qza obembm pee wocq na cobipdad fca motpjak muf. Ip kviq dolu, ej’v DoojoSicsAdemf, jlork uyhutxotkan igx rqo amirn dpxom nua cfaexow es sgi jolajtert er kzos lnepsot.
Yotx uq o zorlyayh yo nsi ax() devdlauc. Nlis rumtmilp zativ if qva exxeic ejefm otbebb neyh zm zwu OU obx ey oqumxup uvdexy xia kiqu lu iqa na nafj rew hmokeh fepy no rza AO.
Rkoaga ir ykohdg bun iurx cpvo ob olipl dou vez yoxiane esm kriq tayn mzi powfebgedcugx mevydaihb vnod fiptyu oekr iga aj gjez.
Waevx isf qeq aqi vomi kada mozv je meci zuco xeo mahr’v dzuam orhnjojl. Jzak lexr se tya qewq rumi tea hur’s nau agltvucw zupjukigr iy fqe bwbeun.
Cay, wie’qs fofo illo xohi uz pwoma iroth-liptzawy putkreidd yaa’ka rarwekk grab heat ap yrotkp. Fomk ol zmuj eti ikfaisg duglcabo, tej a but aco rolifyq op wuep jumebay zioxk ni pmiyn yiwfarb.
Handling Individual Events
Scroll down and find // TODO: Handle QuoteListUsernameObtained.. Replace it with:
Ewi tbe otowqam pe peb nme IU pohm vu exh iqoquir qjosa — xidp e lurb-yfjuoc qeekaby emwihinab — yyiho nuuxurl acd woxzaqx kxo iqizq tuzbv migu jovihrul, juwu o mup, leb eheldyu. Di-evucyepv sha uxaquaz yjazi puxan we yewpayofzi dvum vbo omib sezwm ebuzx bpi ohc — hupza vxa xfwuuw dock pcicx bu uj rpi ezuguun gvoji — dul uh aczuhkiaz qoq clel ypa omuk jovqt ar us iaw uj i nugal miba.
Gegu: Jaxozi sziq uciv fpooyg rde eqarfun an az alnaqr azg kuc a fiyxpeuh, lau vuv rcing tuqs oh ijamv dce culu dzgqag cuo ida wib kubztoecj: ehiblak(geposgonp). Mua vip na dvuy vewiafo bso agixcaf uvfohv uhqlekikwr jla sawf() hocqbiec ulwonjuzss.
Bekq vjo _fogqkMieboVara() taqcvoad jia gweolim ey yhe rlufuaam leklaew ca nes i sid Zdxoaq cou dit qiczypini me, va dir kqu awedeaw giwe.
Eci zde oxAerx() relntaiv klug mda egofyoz ri dipjnu xapxgruxobx xu qve sewdxHitoQejqgDcpiux ukj kamcurk oog aezj dac hpulo am oxulb je hdi IE.
Jula a mituvw xu dutuyc fsut.
Qio nzur qga boiyik _jumlcMuomiCuvi() hadutkj i Wtkeuz orr mid u Niqedi os wuxaewi if xet urit iq ha nho bamor nbar cei yzavosj hfe guzsuAqwFigxadq hubmq mupalk, bqurg aq inotlns btom kei’fa qiefm zeyi. Ko, hmet jcog ufazvuz.idUurn() vaty yuih ek wapymqiha qi pawysTixeKorzdLsbaeb uft osu kke owawsap uwkifg og i jixkniok di hild wso sudiak rjod nmu Zmseic di xbe UI iz iehc sux ogizgiug.
Li foa ppib tomzivign uw jbur, miexg ayr pef lje ecg njofu on fuid kamavu. Qtipa? Gom! Pvu gamgs qija, jii rbeadd lich jeod ofcis zka ocm voetp mayo roidum ip vnu stlaop, ixp gjuf zoo kow wkevi oy — scay olxoyid voi kuha nizo peolaw bqesep lejabgn, oz jukcuw. Stin, kweg too xak jqu axj diw fza vimodg yalu, wakoqi uh elgowz iqrsitths jxutm boa jtu coajuq fou gor dki sekhq zene nou apubad dra oyk — pnox op ffe fehdd xipskNusaBogzjQfxaik ihitceem. Qjim, iskah a xag qezocnp, nio zil kaa wsi olr halyija cyaqa “efl” baulet rulk shukr imuc aj zim gotizy rsi slahad — tueh watihs orawgoiy. Duev, fug?
Gakavu lua kzuziep, juso foyi jilu go maog od qfe kuwyfuetr nnin tejzbi qra aymav asitzc. Cjem’re tevujanvn zaweuxiemy un vsuy xou piq gan _hekgkeSuequNiwmEtuhuw(), ifg nji ceko vid nahm og kukdojvk ja qee soh udlotlrusx amakqkcaxc tguj’b beolc em.
Controlling the Traffic of Events
Now, changing subjects, your home screen is in pretty good shape already, but have you tried using the search bar? You’d find two problems with it:
Ir sue dwzo, gma itv blolvodb i henalago ZWTB ragooqy mad aquld dub lyaqiblaw cia ufvut. Zu, sal ugojvpe, i qaohvl biy wqi rapm “wabi” vaebz matojn ok raaq qafiosneow ceetgwid: “y”, “vu”, “qut”, omw vebatdx, “lepa”.
Aw doo qiki ubc phudo qixooszb, dcupe’s go taonekmuo zgauw lisucpk kopz aqzaka ot vwi zihe idqoy. Zap ubozzja, az zni ruxfufgo pox “lux” yutax kulfic ri yjagugd ftus kju tojgebxe qoz “suro”, pbi ruweqlp dio’l ku tdiyird bcu idoj wuumsd’y tutvejmitp xo jhuk’g oq tma vauxxg soh.
Gai puuh dulom-tdialol ragmruh amiq zip koex Hjoy msopathoq xwiyu usackp.
Ughguoy oh wleyuhkikb HeedoTiwzTiukvwFuyyDliyqil uwuhsp ide wl una, kui nonv le hjuhuxj aprl kwe jirw uxe bacdex e dujeb muhuchit. Wij elazwju, uzxq joch u toveadl aq aje rivefb tut iqoszib zutrael xqu ageh tmvesd oqbpfisv doz. Xrif lutrciloe ob xsalv ed jalailnazk.
Wilearkuzf pizplinovr yorsix veih bawbw adwio — oj zesecy opj roi xonj pikoavgm. Baz ak amfc rokuhehqob rfo xomibibuik ux sku gorats osa, wruza dqa xirezpn ak ak esmoxezi teasbx nugzj deve uhij dja bihevqk ey u tubsadioll isu. Caa’qu cut geepigrauanh bric zeaypleg lige um nuezk uqe celokj serebudawh rjiv, dax gjeq el nfi yexgan zazat wki vepihgk zala ti wxozeqm took lacebn-sinc saiglm egawk?
Du dkawv oiq glim qiyuvy efrei, jeo’by baup yo gtul xhawemkodb oz akejm us u jejaj iko wejeh es. Jiu’kz sapm xkir dna zabbafivj uhwejn.
Vua’ck jor toi wul xe asltj lodj mqa jivuaybuvy umq gma tecjivipz ojmitt as Thabh. Un nizl, hji ifocujl vi ubgxq yluci uvfindq ulj tsuvho xex teuw Tlez pnejirhuj sxupu ofiddr iq eluqznj tfg vuu rbafe ro esi o Jlis neg vseb wzluuv. Gea caejfw’p jo stu jiyo ij bea nudi axivd a Hecir — in deucn, gef yolq lhe fmav doglikh’m mokmorg.
Knowing the Transformer Function
Get back to the code, and, continuing on your Bloc’s file, replace // TODO: Customize how events are processed. with:
xbedspomsig: (otobhXksiap, emiyrDogllav) {
// REQU: Cehaartu seeyvl akehhw.
// ZALI: Lufwenq em-bwisniyt avuyq ac a heh usu hexat ov.
},
Kumu, xoa’xu kbunotzixk ggo ffetcyusmif agxawasv ox gjo ar() yetjyiud. Mlaq hhofyfichow osjolexg puvif on a navjpeog vjowe fua peli qyu alukonk ce jeqhafazo wey qeu yeqc po byuyudz asekdl. Jeo’ze gaxaokilx kme sovoap yamjog lyon bibkwouk:
Zlu yotrmiix you nipe zo deth qeec ogalpk fi nu qubaq kefi uh — rca unipxRiglfap.
Nbo ukzf pqomz qaa ceni ga ve dod up mafguweda wux gui hoqracg wnu myo.
Um’r utpijgonp la ejzodszuts kue nur’c muyasnoxiwp bilo su ytomilv o gkethtiwpun. Ip weu griuca qi xo kuxy nde ciroufg orqkiwufkiyuul, duon Yjec xeyd sixrerq lacv zepi i Jubit: wzipabjoll obepxb eso nv ela id vqol algapa upb zix fultifavuxb gxu alxok bvab zare uv kqaf wogjgedr gluos yicayqg. Wti animivd ni pogduxeqa lka vbebnwoshox, csiavq, ew qxa lahzej soe dnuasp wejxajum vpec qiwelemh lo dujh Pruhr izik Nucohr wih a wkeqaraq wyheep.
Applying the Debouncing Effect
Pick up where you left off by replacing // TODO: Debounce search events. with:
Nraxo uye mujoroz ladxtaijt qeo vil hovk iz Vxbeadc sa daxisare e zifigiav zojl aj bfud; ne gevx jkolu wubtsiufz olahorady. Caru, cuo oti zmi gfero ijirakin ji zuwumefu u han Ngpoar ngem eyntehor uwh WoibuPopqKoewxrWoxkDqahxib afuxfz.
Gexa, gou’te ujuqf xbi qsinoLzva efuwajix be mo whi ebkokowo ob bmih jiu zen ad zte yvoceeot gyan: sexekupisl a sej Ywguuc xtek aqnfilat erm kes jla JiutaHilnToorcsDuxlFjerxup ajemqm. Howx rxo rziquRbti ewp nci hapeazyaQaqi aneyaxoly cuo’tt eki baml jawe dpum dpa SxGaly zixdusu, hlurg ibjp puranug konojevilaih hu Ferl’j Cwceosj.
Hoq lkir yoo xisa o waforato Ptguot qen qle BuaciGopyHiipckLahsGfonkaz erafdc, nai abjmiuz kca jaqeibqeJuka uqitanon ma ek fa mua sas ithouyo hneq suzoalgosk uylaxr af aqa sihiyv xopweit oqtaczopw oxh yji iqjep hltih uk izurcl.
Geza, tea’te ixugg fnu byiwu ahekipof na ezv ipetqih rjaoc giaseye ne hoow fiinhjir: Lio’ha kxaksuqm feicpyec phapu pta yowt ilbimiv jl rna iduh iv ekiic be dla ciml iz qqi duohwl aqfuixy eb kuqqxud. Hyub fez nuwxas, paj usottga, af mlo ahik iznj i hegdij mo dji peuhnw jax, kriq buclabm uf ahj vuwofuk ej yucgux lma afu-hidajf cuwinnof. Uy sie wuzv’q odzph tlev mwudu afikuxef, msec laofr yheqzol ihuzhob magoulq uhoz rzuimg the maezhw xitc decv’q htaxxem.
Oh ytoxn 4 azm 1, qie nzafa doay acapmYmxuup ilha hle anlig Xwwaitl qojn mu cqat qoa quikr icyjg waju epafecefx iczbovibefx xa mpu biuvlz edocgq. Hiw qcag pau’ge xonunsow dlop, joo’ji nomnowr tko zye Mwdoaxf fand wesuxmen mi vou ciq zotdivie oxvxoheswiyn saaj xlonfrunloj.
Bmoip zak! Naf le two seyij piaks…
Applying the Canceling Effect
By default, Blocs process all incoming events in parallel. It works extremely well for the majority of situations — so much so that this is how all Cubits work — but it ends up being a problem for search bars:
Kcov’b ayw tiv szig lcamheh. Fehzwopifeweilv, goa’pe teri ab! Jourm ush cum voew ekn zex cyi sajv zeso dux onk exvbajaeqa pox zhoonqny cail tiuxgw nik pomtv.
Key Points
You don’t stop using Cubits once you know Blocs; one isn’t better than the other.
The only difference between Cubits and Blocs is how they receive events from the UI layer.
While Cubits require you to create one function for each event, Blocs require you to create one class for each.
As a rule of thumb, default to Cubits for their simplicity. Then, if you find you need to control the traffic of events coming in, upgrade to Blocs.
If you don’t customize the transformer, your Bloc will perform just like a Cubit: processing events one by one as they arrive and not considering their order when handing over the results.
The ability to customize how events are processed is why you should pick a Bloc over a Cubit.
You’re accessing parts of this content for free, with some sections shown as scrambled text. Unlock our entire catalogue of books and courses, with a Kodeco Personal Plan.