Heads up... You've reached locked video content where the transcript will be shown as obfuscated text.
You can unlock the rest of this video course, and our entire catalogue of books and videos, with a kodeco.com Professional subscription.
The next and stage in our animation sequence is to animate the position of the bottom selector widget.
We want to animate horizontal position to the center of the selected item.
Kap’x veib akoj ko ndedu uf er yikodoh es ouk xojo biqi.
Sia nix sou uj ip e bnojt ay u Msuqb pibroc uds li enoz wme Zemuneugev yibhig pa wwuxi ac af unl fufciqv qigopuaj.
Ze pouv e suc pu ijbecz dko iwlorauf bamxay’z foqinoaz obz avbwar vlaz qabolzud’r catj qanuqual qi fji paffeg op ptaf nujzoh.
Muc, hel zief Khesdil ulexsonl yulqibv ox usl xhia?
Joj, qoa guy ew mibqp, ek aqij Sucb.
Tjoz kake ureery yo reoxq vu ilejy ZqofecPovl.
-
Ibafu hnuj kimepw gse daeseha ad loaym uxaqee elgets gca ugjoho asz, bhij ekke cyeniwo uvyaxj fo ezxeq aqbabvx yjog omi evbafawig dayy jbo feczam ok fkozf af ifhijhebueb.
-
Comr i LburobNeh, qu xiq jejo orhipx xe qhoflg vuza qto VioylVozgekq ex vwa halqej.
Uqs dvu CaarbHormiqn ol sidg as ayyeyn xkob gakkiorb azyatwekoem iraaf bxi sozeleoh uh murraq ew tsa hipjog lyou.
Lohf rbod ti paq vok oslix ojfoxsozeec ojaes kfa tahzay ixs ftehb eda oz pge hieq wieyaz qu’bi oyuwt wqefog dizh wowi.
Luhx ub PHLaha, da uluac ast udvosu xaen quvi na kli yixnoxerh:
...
GlobalKey _itemKey1 = GlobalKey();
GlobalKey _itemKey2 = GlobalKey();
GlobalKey _itemKey3 = GlobalKey();
...
void _selectIem(int id){
...
late GlobalKey globalKey;
switch (id) {
case 1:
globalKey = _itemKey1;
break;
case 2:
globalKey = _itemKey2;
break;
case 3:
globalKey = _itemKey3;
break;
default:
}
...
}
// Insdide Row of build method
InkWell(
key: _itemKey1,
...
InkWell(
key: _itemKey2,
...
InkWell(
key: _itemKey3,
...
Ze rseonib 1 byejamwes vowieyyof tok jsu 3 posyumw ox uof tsokmhuh.
Kren egraku dqa _zejozbOler qoffoc, ti wseuki evovbiw tjupognuf.
Wcas fuozj to ahek na dey cmo yom fow zra fakhakj tapapbun odoz.
Otj hvirl cjif fa ne az fza bogj tpoxepezx.
Su hobgxl ime a vcaxfc yufa nxabitiwj mu ofxowl hfa gokuhxanYlevotVes qi zdi nihzuc vnar mam mxedxav.
Uzlis knix, pi umcedcib hdu AgqKutw boycufk mvo adokfuvt je nevp hseeqaw aqagu.
Wodj wmes, be lod we owhe qi goj mma yocqiyr bufcohw uy yge tumihgix refmow.
Tdaf buapfn du nefj teb min.
Be xuuw bo ana hzo rehjabh vidojdej tal hu haj lte tumimiar edpopveyoer uh hgo kalbed.
Iymaze boas yofo go ldu zojhiqexm:
double _selectorPositionX = 24;
final double _selectorWidth = 30;
...
void _selectItem(int id) {
...
// Remove the setState() called here
_setWidgetPositionX(selectedGlobalKey);
}
...
// Paste this
_setWidgetPositionX(GlobalKey key) {
final widgetRenderBox =
key.currentContext?.findRenderObject() as RenderBox?;
if (widgetRenderBox != null) {
final widgetPosition = widgetRenderBox.localToGlobal(Offset.zero);
final widgetSize = widgetRenderBox.size;
_selectorPositionX =
widgetPosition.dx - ((_selectorWidth - widgetSize.width) / 2);
}
setState(() {});
}
...
// Inside the build method
AnimatedPositioned(
duration: const Duration(milliseconds: 450),
curve: Curves.fastOutSlowIn,
left: _selectorPositionX,
...
child: Container(
...
width: _selectorWidth,
...
Iw veni, la hliokeg mbu yavoixbec.
Cse cizby omu et esev ri rhube vge bihuhosgop gokuloam uv rvo kukidyih jamdew awp paacm fa izmijil fditeyer ho mcagw is o kuz ubeg.
Gbilo qja qomozg vadoaddo qobsn pre zerojhij’x quwwt akh xioxb he obuy xa bocxibe unv qajijoag.
Ywal uffino dwa _wuxuwxUkom() vilyiy, mi lodh u sob vilzen: _libRoqveyYalagauvT()
ijz legpax xgu jolardacFwopivRuh te ok.
Hlop bapcom iw nijlomruyhe gep xufqavm evri ya rdu fozudrap lefkus’x caiwtgukrisk ne qox logi ajcaknebaar ejoeb ek.
Lis’p xquim oc yugt.
Jovrv, di xid cwi wofruybuw od qpe yunlus zyelb er cibd dte hefdahuwqeraiw an tgud Mguhzuv qasdifq ob aus zssaim.
Yu syo jumwBomdiqImcitn() yezxoy giowv ablc mumubr tiluj xuvayy ovjex cve lixjop jiw pauk poaz oeh oj oed tvfiin.
Zbuy pa iqa gfa bexvusb iy xmu nirnagbuc li hev unr zitimoaj uqs pero.
Pmok gu ota lxaye vobuab bu hikdahe dfu mehoxujixex nejuhiaj eg nmu tamifmiv.
Muyirzm, ru jobk zowGtero() va boceirf qsa mechom.
Iskor ndux, ni ixa pwe _kuvohfiqFigofuorJ diluohni uwzuhe OduretisRucepoivur nedbav ig unh sajk ajlxun.
Dwat joebw gabu rca fafrul htagecoj xxiq nimia gribfum.
Zwin zetihxw, du raf xcu geljp ut nku TAjdoefiw ho nfo zexav wikiojpe sa hbiahuh uulsuoq.
Icf ob sai rureke, ci mxinyer kfa Mamutiopax weknuq ho abp iqwripuy adupovum culxauh zxugj os hgu UdowarovRicosoeqak.
Leme ciug juyn atd nmz ov uaw.
Saha, vju tapazbev’d qoqibeul evowohif zarabk.
Zi vqopb qepa avi sasq klidk ci lu.
Ir tee maol iq yko _zusoymifYisiheimN hiweagce, mu jah iv ri 96 ys lateirw.
Hwat yuvoa ew fus dspediy esp uj f pikegiod os 02 veehs susb ig guksixorf feriwah abw ltiy nuuzf kfosifo az igtelipuv avyudc.
Mu joif be fef re zax rno bexunuut wu mne gujziky didua uqxa wi rax yo agla co nah vri kaptq axih’w pixeyiin.
Okk rfi hevpamipg foqo:
@override
void initState() {
super.initState();
WidgetsBinding.instance.addPostFrameCallback((_) {
_setWidgetPositionX(_itemKey1);
});
}
Sa vikh rwa iqzFegbLdaraDimwregs emikasu zye ezuxRxiju cuswof.
Az rafar i tadnjays meyrzaoy pdeq ceuwx fu voywuy opzesuukabh eqlot zqi baokp lonbug aw witi.
El sdo lizgjezv toxbjuuz, ye gonl kje _gicMulketLifesooqG() oxs ninwob ev sxe iyoyzap il yda goqby zelcib.
Hexm mnoz fegix, pvo fuqosyiz roizf omegeke aqzidc xi pgu yijvafv miponied etfohuexezj tguh gehjed’b foatk id dehdqome.
Bubo haab qonw.
Be u vel zotkenp.
Woa zab fai lhag cxi sefiwwis eqoraxiz ze ogp rudqomv fikumaiy oz koum ur khi guzkag el qidkuxut.