Flutter loogu talagalay Jetpack Abuur Sameeyayaasha: Hagaha Waxqabadka oo Dhamaystiran

Cusbooneysiintii ugu dambeysay: 12/05/2025
  • Flutter iyo Jetpack Compose waxay wadaagaan qaab caddayn, falcelin UI ah, laakiin waxay ku kala duwan yihiin luqadda, nidaamka deegaanka iyo meelaynta goobta.
  • U diyaari khariidadaha si nadiif ah fikradaha Flutter: kuwa la isku hagaajin karo widgets, liisaska caajiska ah ee ListView/GridView, Canvas to CustomPainter iyo mawduucyada ThemeData.
  • Xirfadaha asalka u ah Android (wareegga nolosha, navigation, agabka, isdhaafsiga) si toos ah ugu wareejinta Flutter iyada oo loo marayo widgets, Navigator, hantida iyo async/sugid.
  • Mashruucyada Android-kaliya Samee nalalka, halka Flutter uu ka fiican yahay marka aad u baahan tahay hal codebase Android, iOS, web iyo desktop.

Flutter loogu talagalay Jetpack Compose-soosaarayaasha

Haddii aad horeba u dareemayso inaad guriga ku qorto UI Jetpack Compose oo aad la yaabban tahay sida ay u adag tahay inaad u guurto Flutter, waxaad ku jirtaa boos fiican. Labada qalabba waa kuwo caddaynaya, fal-celinaya oo ay dhistay Google, sidaa darteed qayb weyn oo ka mid ah qaabkaaga maskaxdu waxa ay qaadaysaa ku dhawaad ​​hal-ilaa-hal. Kala duwanaanshiyaha ugu weyn waxay ku nool yihiin luqadda (Kotlin vs Dart), qaab dhismeedka mashruuca iyo sida qaab kasta uu ula hadlayo Android-ka hoose (iyo, kiiska Flutter, iOS, web iyo desktop) lakabyada.

Hagahan waxa si gaar ah loogu qoray Jetpack Compose horumariyeyaasha raba inay si qoto dheer u fahmaan Flutter, iyada oo aan suuqgeyn la samayn. Waxaad arki doontaa sida fikradaha udub dhexaadka u yihiin khariidadda u dhaxaysa labada adduun: isku-darka iyo widgets-ka, wax-ka-beddelayaasha vs cabbiraadaha dhismaha, Lazy layouts vs ListView/GridView, Canvas vs CustomPainter, Navigation Compose vs Navigator, xasuuso vs StatefulWidget iyo in ka badan. Waxaan sidoo kale ku xiri doonaa asalkaaga Android ka ballaaran (Muuqaalka, meertada nolosha, agabka, ujeeddooyinka, shaqada asalka ah) kuwa u dhigma Flutter-kooda si qalooca waxbarashadu uu u dareemo tallaabo dhinac ah marka loo eego fuulitaanka.

Maqaalka laxiriira:
La xalliyey: digtoonida wada hadal leh saxiyaha goobta qoraalka

Laga soo bilaabo Jetpack Compose to Flutter: halkaasoo xirfadahaagu ku wareejinayaan

Flutter waa qaab dhismeedka UI ee Google-ka ee lagu dhisayo abka iskutallaabta ah iyadoo la adeegsanayo luqadda Dart, halka Jetpack Compose uu yahay aaladda casriga ah ee Google ee UI ee Android iyadoo la adeegsanayo Kotlin. Daboolka hoostiisa waxay bartilmaameedsadaan wakhtiyada runtimes ee kala duwan, laakiin qaab dhismeed ahaan waxay wadaagaan fikrad isku mid ah: ku sifee UI inuu yahay shaqo dawladeed, qaabdhismeedku ha ogaado goorta iyo sida dib loo sawirayo.

Jetpack Compose waxaad u malaynaysaa marka la eego hawlaha la isku dari karo, wax ka beddelka iyo dib u habeynta; Flutter waxaad u maleyneysaa dhinaca widgets, cabbiraadaha wax dhisaha iyo dib-u-dhiska. In kasta oo magacyadoodu kala duwan yihiin, hab-dhaqanku si la yaab leh ayuu u eg yahay: waxaad dhistaa geed ka mid ah walxaha UI, noodh kastaa waa mid aan beddeli karin, oo marka gobolku beddelo qaab-dhismeedka geedkaas mar kale ayuu u socdaa si uu u soo saaro is-dhexgal la cusboonaysiiyay.

Mid ka mid ah farqiga muhiimka ah ayaa ah in Flutter uu yahay mid iskutallaab ah oo qaabaysan. Isla Dart codebase wuxuu bartilmaameedsan karaa Android, iOS, web, Windows, macOS iyo Linux. Compose waxa ay ku sii fidaysa wixii ka dambeeya Android (tusaale Compose Multiplatform), laakiin sheekada Flutter ee aaladaha badan waa mid aad u qaangaadhay oo isku xidhan hadda, waana sababta dhabta ah ee ay kooxo badan oo Android-koowaad ahi u eegaan marka ay rabaan inay u soo raraan iOS ama desktop.

Fahamkaaga qalabka Android laftiisa ayaa wali aad u qiimo badan mashaariicda Flutter. Iyadoo lakabka UI uu yahay Dart saafi ah iyo widgets, Flutter waxay ku tiirsan tahay Android (iyo iOS) ogolaanshaha, qaabeynta nidaamka, API-yada madal, ogeysiisyada, shaqada asalka ah iyo awoodo kale oo badan, oo laga galo plugins iyo kanaalada madal. Taas macneheedu waxa weeye dhammaan fikradda aad ka dhistay sida Android u dhaqmo ma luminayso - kaliya waxay hoos u dhaqaajisaa hal lakab.

Qaabka UI ku dhawaaqida: composables vs widgets

Labada Jetpack Compose iyo Flutter labaduba waxay hirgeliyaan qaabka UI ee caddaynta: waxaad qeexaysaa "waxa" UI ay tahay inuu u ekaado gobol la bixiyay, maaha "sida" loo beddelo aragtida tallaabo tallaabo. Halkii aad ugu yeeri lahayd dejistayaasha aragtida, waxaad dib u dhistaa geedkaaga marka gobolku isbeddelo oo u ogolow qaab-dhismeedka inuu kala duwanaado oo dib u habeeyo si hufan.

Jetpack Compose, walxaha UI waa hawlo la isku dari karo oo lagu sharraxay @Composable, inta badan lagu habeeyey a Modifier. Badhan ayaa laga yaabaa Button(onClick = ..., modifier = Modifier.padding(16.dp)). Silsiladda wax ka beddelka ahi waxa ay qurxisaa ama soo bandhigtaa wax la isku samayn karo iyada oo aan la beddelin nooca hoose, oo Compose waxa ay isticmaashaa dib-u-habayn si ay u cusboonaysiiso oo keliya qaybaha geedka oo wax-soo-saarkoodu isbeddelay.

Gudaha Flutter, canaasiirta UI waa widgets- walxaha Dart cad oo qeexaya qaabeynta. Iyagu sidoo kale waa kuwo aan beddelmi karin oo lagu habeeyay geed, laakiin halkii aad ka gudbin lahayd wax-beddele waxaad si toos ah u gudbisaa qaabeynta ama qaabaynta doodaha si toos ah iyada oo loo marayo cabbirada wax-dhisaha, ama waxaad ku duubtaa widget-ka qalabyada kale ee naqshadeynta. Tusaale ahaan, waad qori kartaa Padding(padding: EdgeInsets.all(16), child: ElevatedButton(...)) si loo gaaro natiijo la mid ah.

Meertada nololeed ee agabyada la isku samayn karo iyo widgets labaduba waa kuwo si ulakac ah u jira muddo gaaban oo aan isbedeli karin. Waxay ku nool yihiin oo keliya ilaa gelinta cusub u baahan tahay in la beddelo; Midna iskuma dayo inuu naftiisa maareeyo ama si toos ah isu beddelo. Taasi waa isbeddel fikradeed oo ka yimid adduunkii hore ee Aragga Android halkaas oo aragtiyadu ay yihiin walxo cimri dheer, dib loo isticmaalo oo la beddelo waqti ka dib, waana sababta fikirkaaga Compose uu ugu dareemayo si dabiici ah Flutter.

Daboolka hoostiisa, nashqadaynta labada qaab-dhismeed waxay raacayaan qaab isku mid ah oo waalidku wadaan, oo ku salaysan xannibaad. Waalidka laftiisa ayaa cabbira, waxa uu hoos u dhigaa xannibaadaha, carruurtu waxa ay doortaan cabbir ixtiraamaya caqabadahaas, waalidkuna waxa uu meeleeyaa carruurtiisa. Flutter gudaheeda waxaad arki doontaa tan oo si toos ah u soo baxday BoxConstraints; In Compose waxaa lagu maamulaa hirgelinta Siyaasadda MeasurePolicy. Labada xaaladoodba, waalidiintu waxay xaddidi karaan carruurta - widgets si fudud uma dooran karaan cabbir ama boos kasta oo ay jecel yihiin.

Habaynta abka: barta laga soo galo, xoqida iyo qaabaynta

Android oo leh Compose, bartaada laga soo galo badanaa waa a Activity (badanaa a ComponentActivity) meesha aad wacdo setContent si aad u marti geliso waxyaabahaaga la isku qurxiyo. Halkaa waxaad ka dhisaysaa geedka la isku dari karo, sida caadiga ah ka bilaabma a MaterialTheme iyo dusha sare ama qolof qeexaysa qaabkaaga heerka sare ah.

Gudaha Flutter, meesha laga soo galo waa Dart main function wac runApp oo leh xididka widget-ka codsigaaga. Xididkaas caadi ahaan waa a MaterialApp or WidgetsApp widget, kaas oo dejinaya marin-u-socodka, mawduuca, deegaanaynta iyo hagaha saldhiga. Shaashada ugu horeysa ee aad muujiso waxay isticmaashaa a Scaffold widget, kaas oo ka ciyaara door aad u la mid ah Scaffold Material 3 Compose: waxay ku siinaysaa bar app, jidhka, badhanka ficil sabaynaya, khaanadaha iyo wixii la mid ah.

Qoraalka fudud iyo nuxurka taagan, Compose waxa laga yaabaa in uu ku habboon yahay in lagu duubo nuxurka—cabbirka u dhigma nuxurka gudaha—halka qaar badan oo ka mid ah widget-yada Flutter-ka ay ku habboon yihiin in ay qaataan meel bannaan oo bannaan haddii aan la xaddidin. Tusaale ahaan, haddii aad meel dhigto a Text la isku haleyn karo gudaha tiirka, si toos ah uma buuxin doono ballaca. Gudaha Flutter, a Text gudaha a Column waxay u dhaqmi kartaa si ka duwan iyadoo ku xiran caqabadaha waalidkeed. Si aad u dhex dhexaadiso nuxurka Flutter, waxaad marar badan ku duubi doontaa waxyaabaha a Center widget, ama isticmaal qalabyada qaabaynta sida Align, Row, Column, Iyo Expanded oo lagu daray sifooyinka toosan.

Nashqadaynta toosan ayaa khariidad u dhow si fiican: Compose ayaa leh Row iyo Column, iyo sidoo kale Flutter. Flutter waxaad u gudubtaa carruurta sida a List<Widget> oo la xakameeyo kala dheeraynta iyo la jaanqaadida guryaha sida MainAxisAlignment iyo CrossAxisAlignment. In Compose, aad ku tiirsan tahay horizontalArrangement, verticalArrangement, horizontalAlignment iyo verticalAlignment. Qaab faa'iido leh oo looga fekerayo: guryaha ku dhamaanaya khariidadda "Arrangement" ilaa dhidibka ugu weyn ee Flutter, iyo kuwa ku dhamaanaya khariidadda "Isku toosinta" ilaa dhidibka iskutallaabta.

Marka aad u baahato jaantusyo qaraabo ah ama is dulsaaran, dariiqooyinku sidoo kale fikrad ahaan way toosan yihiin. Android XML waxaad ku gaari kartaa RelativeLayout ama isku darka buul leh LinearLayout iyo FrameLayout. In Compose aad curin lahayd Row, Column iyo Box (ama qor qaab-dhismeedka gaarka ah). Flutter analoogu waa Row, Column iyo Stack oo ay weheliyaan carruur meelaysan iyo ikhtiyaarka toosinta. Qaabka maskaxeed ee aad u habaynayso curiyayaasha marka loo eego midba midka kale wuu dhaqaaqaa ku dhawaad ​​isma bedelin.

Badhamada, gelinta iyo isdhexgalka

Jetpack Compose, in la dhiso badhan waxa ay ka dhigan tahay isticmaal Button ama mid ka mid ah noocyada kala duwanaanshaheeda Walxaha, kaas oo hoos yimaada Material 3 xaliya hirgalinta gaarka ah sida FilledTonalButton. Waxaad bixisaa ah onClick lambda iyo habaynta ikhtiyaariga ah, inta badan iyada oo loo marayo xuduudaha sida colors ama wax ka beddelayaasha suufka, ballaca iyo toosinta.

Flutter, wax u dhigma ayaa isticmaalaya widgets sida FilledButton, ElevatedButton, TextButton or OutlinedButton. Mid kastaa wuxuu qaataa a onPressed dib u soo celinta iyo a child widget-inta badan a Text. Waxaad iyaga habayn kartaa adiga oo gudbiya a style via ButtonStyle ama isticmaalaya dulmar caalami ah, kaas oo kuu ogolaanaya inaad si dhexe u hagaajiso midabka, qaabka, sare u qaadida iyo baaxadda qoyska badhanka oo dhan.

Wax ka qabashada dhaqdhaqaaqyada, Compose waxay ku tiirsan tahay wax ka beddelayaasha sida Modifier.clickable Xaalado badan, laakiin sidoo kale waxaad hoos ugu dhici kartaa tilmaameyaal khaas ah marka loo baahdo. Cadaadis dheer, jiidid iyo dhaqdhaqaaqyo caado ah ayaa caadi ahaan ka kooban APIs wax ka beddelka u go'ay iyo ilaha is dhexgalka.

Flutter waxay daaha ka qaadaysaa wax cad GestureDetector widget in aad ku duubto wax kasta oo aan lahayn taageerada tilmaanta. Waxay bixisaa soo-celin ballaaran oo kala duwan: onTap, onDoubleTap, onLongPress, onVerticalDragStart, onVerticalDragUpdate, onHorizontalDragEnd iyo qaar kale oo badan. Widgets sida ElevatedButton mar hore kashifaan onPressed hantida, laakiin si buuxda UI walxaha caadadii waxaad isticmaali kartaa GestureDetector ama widgets heer sare ah sida InkWell jawaab celinta Material ripple.

Gelitaanka qoraalka ee Flutter waxaa lagu maareeyaa TextField or TextFormField, kuwaas oo qaabayntoodu ay barbar socoto kuwa Compose's TextField iyo OutlinedTextField la isku haleyn karo. Waxaad u habaynaysaa tilmaamo, calaamado, khaladaad iyo xuduudo adoo isticmaalaya a InputDecoration la mid ah sida aad u isticmaasho TextFieldDefaults ama halbeegyada ku qor qoraallada. Sida Compose, waxaad caadi ahaan u muujisaa fariimaha khaldan si firfircooni leh adiga oo beddelaya gobolka oo dib u dhisaya qurxinta halkii aad gacanta ku maamuli lahayd aragtiyaha.

Liisaska, xayndaabyada iyo nuxurka duubista

Jetpack Compose wuxuu bixiyaa laba xeeladood oo liisaska ugu waaweyn: fudud Column/Row oo leh dib-u-eegis loogu talagalay ururinta yaryar, iyo LazyColumn/LazyRow/LazyVerticalGrid/LazyHorizontalGrid liisaska waaweyn ama kuwa firfircoon. Weelasha caajiska ah waxay kaliya ka kooban yihiin waxa muuqda, kuwaas oo kor u qaada waxqabadka sare marka la macaamilayo kumanaan shay.

Flutter wuxuu raacayaa qaab isku mid ah oo yar- vs-weyn laakiin leh qalabyo kala duwan. Liis yar oo ku habboon shaashadda waxaad kaliya isticmaali kartaa a Column oo u khariidad xogtaada children. Wax kasta oo rogroga, waxaad gaadhaysaa ListView or GridView, oo leh kuwa wax dhisa oo si caajisnimo leh u abuura carruur kaliya marka loo baahdo.

Habka caadiga ah ee Flutter waa ListView.builder, kaas oo muraayada u ah Compose's liiska caajisnimada alaabta DSL. Waxaad bixisaa ah itemCount oo ah itemBuilder dib u soo celinta; Flutter wuxuu ugu yeeraa dhisahaas oo leh index ka 0 ilaa itemCount - 1 mar kasta oo shay cusub yimaado. Gudaha wax-dhisaha waxaad ku soo celin kartaa ku dhawaad ​​widget kasta-ka fudud ListTile leh qoraal iyo summada mid kakan, safafka liiska gaarka ah.

Xirmooyinka, Compose's LazyVerticalGrid iyo LazyHorizontalGrid khariidad ku socota Flutter's GridView widget. Halkii aad ka gudbin lahayd tiirka si toos ah loo tirinayo shabagga, Flutter wuxuu badiyaa adeegsadaa ergo sida SliverGridDelegateWithFixedCrossAxisCount or SliverGridDelegateWithMaxCrossAxisExtent si loo xakameeyo sida unugyadu u kala baxaan. Wufuuddani waxay koobayaan xeerarka sida "tirada tiirarka" ama "ballaca unugga ugu badan," oo la mid ah cabbirka cabbirka xajmi ee aad ku isticmaasho Compose.

Dabeecadda wareeggu sidoo kale waa isku mid labada qalabyada. Liisaska caajiska ah ee Compose waxay la yimaadaan duubid la dubay; kuma daboosho weelal dheeraad ah oo duuban. Flutter gudaheeda, liis badan iyo widgets-ka widgets laftooda ayaa ah kuwa la duubi karo, laakiin kaliya, waxyaabaha aan soo noqnoqon ee ay tahay inaad rogto waxaad isticmaali kartaa SingleChildScrollView. Dhisidda bogag la rogrogmi karo ka dib waxay noqonaysaa arrin buul-buul ah ama samaynta jeexjeexyada kiisaska isticmaalka horumarsan.

Hababka UI ee la qabsiga iyo ka jawaabista

Compose waxa ay ku siinaysaa dhawr xeeladood oo loogu talagalay nakhshad jawaab celin leh: qaabayn gaar ah, BoxWithConstraints, WindowSizeClass iyo Material 3 laqabsiga maktabadda. Kuwani waxay kuu oggolaanayaan inaad beddesho halabuurkaaga iyadoo lagu saleynayo booska bannaan, booska iyo qaybta qalabka, waxaadna isku dari kartaa iyaga iyadoo ku xiran kakanaanta mashruuca.

Flutter iskuma dayo inuu si toos ah u milicsado APIs-yadaas, laakiin fikradda hoose waa isku mid: hubi caqabadaha iyo sifooyinka shaashadda, ka dibna la mid ah qaabkaaga. Labada qalab ee ugu muhiimsan waa LayoutBuilder iyo MediaQuery. LayoutBuilder baas BoxConstraints hoos si aad u beddesho ama u habayn karto widgets ka sarreeya ballaca ama dhererka qaarkood. MediaQuery waxay soo bandhigaysaa cabbirka shaashadda, jihaynta, suufka iyo cufnaanta pixel ee meelaha jabinta heerka sare.

Halkii la higsan lahaa khariidad mid-ka-mid ah oo u dhaxaysa xalalka la qabsiga Compose iyo Flutter's, waxa aad waxtar u leh in laga fikiro shuruudaha naqshadayntaada. Marka aad ogaato sida UI-gaagu uu ula qabsanayo talefannada, tablet-yada iyo miisaska gacanta, waxaad ku muujin kartaa caqligaas adiga oo isticmaalaya Compose's WindowSizeClass iyo qaabaynta la qabsiga ama Flutter's xannibaadda ay wado iyo laanta ay saxaafaddu waddo. Naqshad isku mid ah fikirka — API-yo kala duwan.

Maamulka Gobolka: Xusuusnow vs StatefulWidget iyo wixii ka dambeeya

Jetpack Compose waxay ku kaydisaa gobolka ephemeral UI iyadoo la isticmaalayo remember iyo dadka haysta gobolka sida mutableStateOf, inta badan lagu daro ViewModel iyo qaybaha qaab dhismeedka ee xaalada muddada dheer. Marka gobolku is beddelo, dib-u-habayn ayaa dhacaysa oo kuwa la samayn karo waxay helayaan qiyam cusub.

Sheekada heerka hoose ee Flutter waxay ku wareegaysaa StatefulWidget iyo waxa la xidhiidha State walax. Waxaad qeexdaa widget raba inuu hayo gobolka adoo kordhinaya StatefulWidget, dabadeed hirgeli mid gaar ah State<MyWidget> fasalka si loo kaydiyo beeraha la beddeli karo. Mar kasta oo aad cusboonaysiiso goobahaas, waad wacdaa setState(), taas oo ku calaamadisa qaybta geedka widget-ka mid wasakh ah oo kicisa dib-u-dhis. Marka heerkan la joogo waxa ay aad ugu egtahay in lagu kaydiyo Compose state remember iyo bur burinta waxyaabaha la isku daray marka qiyamku is beddelo.

Barnaamijyada kakan, Flutter waxa uu si weyn ugu tiirsan yahay bulshada iyo qaababka xisbiga koowaad: Provider, Riverpod, Bloc, dukaamada qaabka Redux iyo qaar kaloo badan. Kuwani waxay u dhaqmaan sida isku-dhafka isugeynta dhismahaaga Android: ViewModel + LiveData/Flow + kaydinta mashaariicda Samee. Waxay dhexdhexaadiyaan macquulka ganacsiga waxayna soo bandhigaan qulqulka falcelinta xogta ee dhaqaajisa dib-u-dhiska widget-ka. Laga soo bilaabo asalka Abuur, waxaad ka heli doontaa qaar badan oo ka mid ah qaababkan oo caan ah xitaa haddii API-yadu ka duwan yihiin.

Hal dhibic oo inta badan ka yaabsa horumariyeyaasha Android ayaa ah in widgets-ka bilaawga ah iyo kuwa gobolka ee Flutter labaduba ay dib u dhisaan si joogto ah - suurtogalnimada qaab kasta inta lagu jiro animations. Farqigu maaha mid ku saabsan dib-u-dhiska soo noqnoqda laakiin waxa ku saabsan halka lagu kaydiyo xaaladda beddelmi karta: StatefulWidget wehel ku siiyo State shay ka badbaaday dib u dhis, si la mid ah sida remember u ogolaado qiyamka inay badbaadiyaan dib u curinta ee Compose.

Sawir-qaadid, animation iyo nadiifin muuqaal ah

Haddii aad waligaa si toos ah ula shaqeysay Android's Canvas iyo Drawable, Compose's Canvas la isku haleyn karo waxay u badan tahay inay si toos ah u dareemeen. Waxay bixisaa hab caddayn ah oo lagu sawiro qaababka, sawirada iyo qoraalka Kotlin, iyada oo qarinaysa wax badan oo ka mid ah xafladaha muhiimka ah ee aragtida dhaqanka dhaqameed.

Flutter waxay daaha ka qaadaysaa sawir la mid ah oogada Canvas API, laga helay iyada oo loo marayo CustomPaint iyo CustomPainter. Waxaad hirgelisaa a CustomPainter fasalka meesha aad ka gudubtay paint habka loo sawiro shiraaca iyadoo la isticmaalayo Paint walxaha, waddooyinka, isbeddelka iyo wixii la mid ah. Waxaad markaas ku dhejinaysaa rinjiile a CustomPaint widget. Daboolka hoostiisa ayaa labadaba Compose iyo Flutter waxay ku tiirsan yihiin mishiinka Skia, markaa horudhac - khadadka, waddooyinka, harka - waxay aad ugu egyihiin bandhigga 2D ee Android.

animations, Flutter wuxuu ku tiirsan yahay nidaam animation cad oo hareeraha laga dhisay AnimationController, Animation<T> iyo Tweens, oo lagu daray tiro badan oo widgets firfircoon. Waxaad markiiba ku dajinaysaa kontaroolaha (sida caadiga ah SingleTickerProviderStateMixin for vsync), qeex CurvedAnimations ama Tweens kuwaas oo khariidad 0-1 horumarisa qiyamka domainka, ka dibna ku xidhi widgets sida FadeTransition, ScaleTransition, AnimatedBuilder ama widgets qarsoon sida AnimatedContainer. Nidaamka animation ayaa sidoo kale soo bandhigaya AnimationStatus dib-u-soo-celinta si ay uga fal-celiyaan bilawga, dhamaystirka ama dib u noqoshada.

Jetpack Compose's animation APIs waa caddayn kor ilaa hoos, oo leh hawlo ay ka mid yihiin animate*AsState, kala guurka, iyo muuqaal firfircoon Halkii aad gacanta ku maareyn lahayd kontaroolayaasha kiisaska caadiga ah, waxaad qeexaysaa dawladaha la beegsanayo iyo qaabdhismeedku waxa uu keenaa isdhexgalka wakhti ka dib. Marka aad u baahato kontorool hadal dheerad ah, waxaad weli fursad u helaysaa horudhac heer hoose ah, laakiin dariiqa caadiga ah ayaa ka gaaban kan Android XML-ga caadiga ah ama koodka animation-ka lama huraanka ah.

Fikrad ahaan, waxaad u isticmaashaa labada qalabba si isku mid ah: widgets/composables ka dhig kuwa fudud oo saafi ah, ku riix qiyamka wakhtiga kala duwan iyaga, oo u ogolow qaabku inuu qabto isdhexgalka iyo burinta. Sida horumariye Compose ah, caddaynta dheeraadka ah ee Flutter's AnimationController waxaa laga yaabaa in marka hore la dareemo xoogaa dugis gabow ah, laakiin waxa ay ku iibsanaysaa kontorool aad u fiican oo ku saabsan wakhtiga, qalooca iyo habaynta.

Habaynta, habaynta, xarfaha iyo hantida

Barnaamijyada casriga ahi waxay ku nool yihiin ama ku dhintaan dhalaal, markaa Flutter iyo Compose labaduba waxay culayska saaraan habaynta iyo habaynta. Abuur isticmaal MaterialTheme oo leh naqshado midab leh, qaab-qoraal iyo qeexid qaab, waxaadna ku dhejin kartaa mawduucyada si aad uga gudubto qiyamka geedaha-hoosaadka - oo ay ku jiraan ku khasbida iftiinka ama dusha madow ee gobollo gaar ah.

Flutter dhexdeeda, waxay u dhigantaa ThemeData u gudubtay MaterialApp or Theme widget. Waxaad qeexdaa midabada aasaasiga ah, dhalaalka, qoraalka qoraalka iyo mawduucyada gaarka ah sida elevatedButtonTheme, textButtonTheme, appBarTheme iyo qaar kaloo badan. Waxaad meesha ka saari kartaa mawduucyada gudaha adiga oo ku duubaya geedaha hoose Theme widgets koobiyaya waalidka oo wax ka bedela meelaha qaarkood. Qaabka iftiinka iyo mugdiga ah waxaa lagu beddeli karaa heerka abka iyadoo la bixinayo theme iyo darkTheme iyo xakamaynta themeMode.

Habaynta qoraalka waa dhul la yaqaan: Compose si toos ah ugu gudbi guryaha fudud Text ama sahay a TextStyle walax. Flutter ayaa tan ku tusaya a Text widget aqbala a TextStyle iyada oo loo marayo style halbeegga TextStyle daboolayaa farta qoyska, cabbirka, miisaanka, kala dheeraynta xarfaha, dhererka khadka, qurxinta iyo wax ka badan. Waxaad ku qeexi kartaa mawduucyada qoraalka caalamiga ah gudaha ThemeData.textTheme meel walbana u tixraac, sida aad u isticmaali lahayd qoraal-qoraalka MaterialTheme in Compose.

Farta iyo sawirada waxaa lagu maamulaa hantida halkii laga isticmaali lahaa Android keeda soo jireenka ah /res geed tusaha. Flutter ma hirgeliyo qaabaynta galka gaarka ah; waxaad ku dhawaaqaysaa hantida pubspec.yaml ka dibna ka tixraac koodka. Sawirada waxaa sida caadiga ah lagu raray Image.asset(), kaas oo xaliya baaldi cufnaanta saxda ah ee ku salaysan devicePixelRatio. pixels macquul ah waxay ciyaaraan door la mid ah kan dp Android, isaga oo ka fogaynaya cufnaanta pixel-ka.

Farshaxanada gaarka ah, Compose wuxuu kuu ogolaanayaa inaad xirto agabka qoraalka ama aad ku jiido wakhtiga runtime bixiyayaasha sida Google Fonts, ka dibna ku xidho FontFamily iyo qoraalka. Flutter waxay isticmaashaa ku dhawaad ​​isla qaab isku mid ah: ku rid feylasha font galka hantida, ku tax pubspec.yaml, ka dibna tixraac qoyska farta magaca gudaha TextStyle. Haddii aad rabto xarfaha runtime-soo-saar, waxaa jira mid caan ah google_fonts plugin oo soo bandhigta hawlaha Dart ee loogu magac daray farta-tusaale GoogleFonts.robotoTextTheme()-si aad si dhakhso leh ugu xidhid mawduucaaga.

Labada deegaanba waxay ula dhaqmaan xargaha iyo meelaynta sida welwelka heerka koowaad, in kasta oo Flutter uusan lahayn wax toos ah oo u dhigma agabka xadhkaha XML ee Android. Taa beddelkeeda, habka ugu fiican ayaa ah in lagu hayo turjumaada .arb faylasha oo ku xidh qalabka meelaynta Flutter. Gelitaanku wuxuu markaas ku dhacaa fasallada Dart ee la soo saaray, oo qiyaas ahaan la mid ah isticmaalka R.string aqoonsiyaasha koodka Android.

Fikradaha madal Android iyada oo loo marayo lenska Flutter

Marka laga soo tago UI, mid ka mid ah su'aalaha ugu waaweyn ee Abuur-sameeyayaasha ayaa leh waa sida ay aqoontooda Android ay ugu sameeyaan naqshadaha Flutter. Nasiib wanaag, qaar badan oo ka mid ah fikradaha asaasiga ah-hawlaha, meertada nolosha, ujeeddooyinka, shaqada asalka ah, ilaha, isku-xidhka - waxay leeyihiin jaalayaal cad, xitaa haddii API dusha sare u muuqdo mid ka duwan.

Android, Activity iyo Fragment waa shaashadahaaga aasaasiga ah iyo weelashaada; gudaha Flutter wax walba waa widget, iyo navigation waxay ku dhacdaa iyada oo loo marayo Navigator iyo Route walxaha. Dariiqu wuxuu u dhigmaa qiyaastii hawl ama jajab, laakiin inta badan waxaa jira hal martigelin Activity Android-ka ku dhex-jira mishiinka Flutter-ka. Waxaad riixaysaa oo aad dariiqyada ku soo rogi doontaa rashka Navigator, midkoodna adoo sii maraya wadooyin magac leh oo lagu qeexay MaterialApp ama iyada oo si toos ah loo dhisay PageRoute tusaale ahaan MaterialPageRoute.

Dib u soo celinta meertada nolosha Android (onCreate, onStart, onResumeiwm WidgetsBindingObserver. Waxay daaha ka qaadaysaa dawladaha sida resumed, inactive, paused iyo detached, kaas oo qiyaas ahaan u dhigma Android muuqaalkiisa, asalka iyo wejigiisa burburay. Marka aad si dhab ah ugu baahan tahay xidhmooyinka meertada nolosha heerka hoose ee maaraynta agabka, sida caadiga ah waxaad ka hirgalisaa dhinaca hooyo ee Android FlutterActivity ama plugin, oo aan ku jirin Dart.

Ujeedadu waxay ka ciyaartaa laba door Android: in-app navigation iyo isgaarsiinta abka. Sida ku xusan, Flutter ma laha API navigation ku salaysan ujeedo-Navigator si buuxda ayuu u bedelayaa gudaha Dart world. Hawlaha abka-isku-tallaabta ah (kameerada bilawga ah, fayl-dooriyaha, maaraynta ujeeddooyinka wadaagga), waxaad guud ahaan isticmaashaa plugins kuwaas oo duuba wicitaannada lagama maarmaanka ah ee Android (iyo iOS). Haddii plugin uusan jirin, waxaad qori kartaa adiga adiga oo isticmaalaya MethodChannels si aad uga hadasho Dart iyo koodka asalka ah, gudbinta ujeeddooyinka iyo natiijooyinka farriimaha ahaan.

Fahamkaaga shaqada soo jireenka ah iyo duntu sidoo kale way wareejinaysaa, laakiin waxyaalaha aasaasiga ahi way ka duwan yihiin. Android waxa ay ku riixaysaa in aad ka dhaqaajiso shabkada iyo diskka I/O ee dunta muhiimka ah adoo isticmaalaya coroutines, AsyncTask (legacy), WorkManager, JobScheduler, RxJava iyo wixii la mid ah. Dart, marka la barbardhigo, waxay isticmaashaa loop dhacdo hal-stringed ah meel kasta oo go'doon ah, oo leh async/sugid I/O iyo go'doomin gaar ah oo loogu talagalay shaqada culus ee CPU. Wax kasta oo ku xidhan I/O, kaliya calaamadee hawlahaaga async, await Hawlgalka oo ha dhacdo in loop ka dhigo mid ka jawaabaya UI; Hawlaha culus ee CPU waxaad go'doomisay oo aad ku wada xidhiidhi kartaa fariinta beddelka xusuusta la wadaago.

Dhinaca hore ee isku xidhka, Flutter waa caan http xirmo ayaa door la mid ah OkHttp + Dib u habeynta kiisaska isticmaalka aasaasiga ah. Waxay qarisaa inta badan shaqada godka hoose waxayna si dabiici ah ula midowdaa async/sugid. Baahiyaha adag waxaad kor ugu qaadi kartaa baakadaha sida dio, laakiin qaabka aasaasiga ah ayaa weli ah: samee wicitaan async ah, sug natiijada, cusbooneysii xaaladda setState() ama maamulaha gobolka ee aad dooratay, oo dib u dhis qalabyada ay saamaysay.

Plugins, kaydinta, Firebase iyo qalabaynta

Android-ka waxaad u isticmaashay inaad kaga dhawaaqdo ku-tiirsanaanta Gradle; Flutter waxaad ku caddaysaa inay soo galeen pubspec.yaml oo ka soo qaado pub.dev. Faylasha Gradle ee hoos yimaada android/ Galka mashruuca Flutter inta badan waxaa loogu talagalay is dhexgalka gaarka ah ee madal-ama marka aad u baahan tahay maktabado hooyo oo caado u ah—maalin-maalin-maalin-maalin-maalin horumarinta abka waxa ay joogaan Dart land.

Dookhyada la wadaago iyo SQLite sidoo kale waxay leeyihiin wax u dhigma oo diyaarsan. Halka Android ay bixiso SharedPreferences Kaydinta qiimaha-yar ee muhiimka ah iyo SQLite (ama Qolka) xogta habaysan, Flutter waxay kuwan ku duubtaa fiilooyinka sida shared_preferences iyo sqflite. Xirmooyinkani waxay mideeyaan habdhaqanka Android iyo iOS si aad u isticmaali karto hal Dart API iyada oo aan loo eegin goobta, adigoo wali ku tiirsan hirgelinta hoose ee asalka ah.

Isku dhafka Firebase waa isku mid toosan iyo heerka koowaad. Inta badan adeegyada Firebase-Authentication, Firestore, Database Realtime, Cloud Messaging, Analytics, Remote Config iyo in ka badan-waxay leeyihiin plugins Flutter oo rasmi ah oo ay ilaaliyaan kooxaha Firebase iyo Flutter. Waxay muraayad u yihiin qaabka fikradeed ee Android's Firebase SDKs laakiin leh Dart-idiomatic APIs. Sifooyin badan oo Firebase ah oo aan si toos ah loo daboolin, waxaa jira nidaam deegaan caafimaad leh oo ah plugins dhinac saddexaad ah oo ku yaal pub.dev.

Si loo saxo khaladka iyo xog-ururinta, Flutter's DevTools suite waxa uu ku siinayaa sanduuq qani ah oo si toos ah ula barbardhigi kara profile-ka Android Studio iyo Kormeeraha Layout. Waxaad kormeeri kartaa geedka widget-ka, raadraaca dib-u-dhiska, daawado qoondaynta xusuusta, baadhdi kartaa daadinta iyo kala qaybsanaanta, oo aad ka gudubto koodhka Dart. Marka lagu daro taageerada IDE ee Android Studio iyo VS Code, dib u soo dejin kulul iyo dib u bilow kulul, wareegga jawaab celinta ee horumarka Flutter waxa uu dareemaya ugu yaraan cidhiidhi—oo inta badan ka adag—marka loo eego waxa aad u baratay Compose.

Ogeysiisyada riix, walaac kale oo caadi ah oo Android ah, ayaa lagu maamulaa Flutter iyada oo loo marayo plugins sida firebase_messaging. Daboolka hoostiisa waxaad kala hadashaa Firebase Cloud Messaging iyo qaabka ogaysiinta asalka ah ee Android iyo iOS, laakiin macquulka abkaagu wuxuu ku nool yahay Dart API oo midaysan. Habbeebka iyo habdhaqanka gaarka ah ee madal (sida kanaalada ogeysiiska ee Android) wali waa muhiim, khibradaada jirta ee tafaasiisha madalkaasna waxay sii ahaanaysaa mid aad u khusaysa.

Xitaa aaladaha shaashadda guriga ee Android, oo aan lagu fulin karin Flutter oo keliya, ayaa wali ku dhex milmi kara koodka Flutter. Waxaad caadi ahaan ku dhistaa Jetpack Glance ama qaab-dhismeedka XML ka dibna isticmaal xirmo sida home_widget si aad ula xidhiidho abkaaga Flutter, la wadaagto xogta oo aad u geliso rasterized Flutter UI sida sawir gudaha widget-ka hooyo. Habkaas isku-dhafka ah wuxuu kuu ogolaanayaa inaad ku sii haysato khibradaada ugu weyn ee Flutter adigoo ixtiraamaya caqabadaha madal.

Marka la eego dhammaan kuwan isbarbar-dhigga ah, horumariyaha Jetpack Compose ee u tallaabaya Flutter kama soo bilaabmayo eber. Fahamkaaga cadeynta UI, meertada nolosha Android, navigation, gobolka, kheyraadka iyo khariidadaha shaqada async si dabiici ah ugu socda aduunka Flutter; waxa badi badala waa magacyada, luqadda (Dart), iyo maskaxda madal-badan. Marka aad gudaha u geliso widgets iyo Navigator sida fikradaha aasaasiga ah, inta soo hartay ee xirmada waxay u janjeertaa inay si degdeg ah meesha u gasho.

Related posts: