- Flutter uye Jetpack Compose igovera inozivisa, inoshanda UI modhi, asi yakasiyana mumutauro, ecosystem uye chikuva kusvika.
- Gadzira mamepu zvakachena kuFlutter concepts: composables kune majeti, Simbe rondedzero kuListView/GridView, Canvas kuCustomPainter uye madingindira kuThemeData.
- Hunyanzvi hwepa Android (hupenyu, kufamba, zviwanikwa, concurrency) kuendesa zvakananga kuFlutter kuburikidza nemajeti, Navigator, midziyo uye async / kumirira.
- Kumapurojekiti eAroid-chete Nyora inopenya, ukuwo Flutter ichipfuura kana iwe uchida imwechete codebase yeAroid, iOS, webhu uye desktop.
Kana iwe uchitonzwa kumba uchinyora maUI neJetpack Compose uye uri kunetseka kuti zvakaoma sei kuenda kuFlutter, uri pachinzvimbo chikuru. Maturusi ese ari maviri anozivisa, anoshanda uye akavakwa neGoogle, saka chikamu chikuru chemuenzaniso wako wepfungwa chinotakura chinenge chimwechete-kune-chimwe. Misiyano mikuru inogara mumutauro (Kotlin vs Dart), chimiro chepurojekiti uye matauriro ega ega kune ari pasi pe Android (uye, mune yaFlutter's, iOS, webhu uye desktop) zvidimbu.
Gwaro iri rakanyorerwa vagadziri veJetpack Compose vanoda kunzwisisa Flutter zvakadzama, pasina kushambadzira fluff. Iwe uchaona kuti epakati pfungwa mepu pakati penyika mbiri idzi: composables vs majeti, modifiers vs muvaki paramita, Simbe marongero vs ListView/GridView, Canvas vs CustomPainter, Navigation Compose vs Navigator, rangarira vs StatefulWidget nezvimwe. Tichabatanidza yako yakafararira Android kumashure (Maonero, kutenderera kwehupenyu, zviwanikwa, vavariro, basa rekumashure) neFlutter yavo yakaenzana saka iyo yekudzidza curve inonzwa senge nhanho yekudivi pane kukwira.
Kubva kuJetpack Nyora kuenda kuFlutter: uko hunyanzvi hwako hunotamiswa
Flutter ndiyo Google's UI chimiro chekuvaka muchinjika-chikuva maapplication uchishandisa mutauro weDart, nepo Jetpack Compose iri Google yemazuva ano UI toolkit yekwako Android uchishandisa Kotlin. Pasi pehodhi vanonangidzira akasiyana nguva dzekumhanya, asi zvekuvaka vanogovana pfungwa huru imwechete: tsanangura UI sebasa renyika, rega chimiro chione kuti riini uye sei kudhirowazve.
MuJetpack Gadzira iwe unofunga maererano neanogona kuumbika mabasa, modifiers uye recomposition; muFlutter iwe unofunga maererano nemajeti, muvaki maparamita uye anovakazve. Kunyangwe nemazita akasiyana, maitiro akafanana zvakafanana: iwe unovaka muti weUI zvinhu, imwe neimwe node haichinjike, uye kana nyika ikachinja dhizaini inofamba iwo muti zvakare kuburitsa yakagadziridzwa interface.
Mumwe mutsauko wakakosha ndewekuti Flutter inoyambuka-chikuva nedhizaini. Iyo yakafanana Dart codebase inogona kunanga Android, iOS, webhu, Windows, macOS uye Linux. Compose iri kuwedzera kupfuura Android (semuenzaniso neCompose Multiplatform), asi Flutter's multi-device nyaya yakanyanya kukura uye yakabatana izvozvi, ndosaka zvikwata zvakawanda zvekutanga zveAndroid zvichizvitarisa pavanenge vachida kutumira kuIOS kana desktop.
Kunzwisisa kwako kwepuratifomu yeAroid pachayo kuchiri kukosha zvakanyanya mumapurojekiti eFlutter. Kunyange iyo UI layer iri yakachena Dart uye majeti, Flutter inovimba neApple (uye iOS) yemvumo, sisitimu yekumisikidza, API yepapuratifomu, zviziviso, basa rekumashure uye mamwe akawanda masimba, anowanikwa kuburikidza nemapulagi uye chiteshi chiteshi. Izvi zvinoreva kuti intuition yese yawakavaka pamusoro pemaitiro eAndroid haaparare - inongofambisa imwe layer pasi.
Declarative UI modhi: composables vs majeti
Ose ari maviri Jetpack Compose uye Flutter shandisa inozivisa UI modhi: unotsanangura "chii" iyo UI inofanira kutaridzika kune yakapihwa nyika, kwete "maitiro" ekushandura maonero nhanho nhanho. Panzvimbo yekufonera masheta pamaonero, unovakazve muti wako kana nyika yachinja uye rega chimiro chisiyane uye dhizaini zvakanaka.
MuJetpack Compose, zvinhu zveUI zvinhu zvinoumbika zvakatsanangurwa nazvo @Composable, kazhinji inogadziriswa ne Modifier. Bhatani rinogona kunge riri Button(onClick = ..., modifier = Modifier.padding(16.dp)). Iyo modifier cheni inoshongedza kana kuisa kunze inoumbika pasina kushandura iyo yepasi mhando, uye Compose inoshandisa recomposition kuzorodza chete zvikamu zvemuti izvo zvakapinda zvakachinja.
MuFlutter, zvinhu zveUI majeti - zviri pachena Dart zvinhu zvinotsanangura kurongeka. Iwo zvakare haachinjiki uye akarongwa mumuti, asi pachinzvimbo chekupfuura chinogadzirisa iwe unowanzo pfuura marongerwo kana kutaira nharo zvakananga kuburikidza neanovaka paramita, kana iwe unoputira widget mune mamwe marongerwo majeti. Somuenzaniso, unogona kunyora Padding(padding: EdgeInsets.all(16), child: ElevatedButton(...)) kuwana mhedzisiro yakafanana.
Hupenyu hwezvese zviri zviviri composables uye mawijeti ndeye nemaune-inorarama uye isingachinjiki. Vanorarama chete kutozosvikira patsva pachida kuti vatsiviwa; haiedzi kugadzirisa hupenyu hwayo kana kuzvishandura pachayo zvakananga. Ndiko kuchinjika kubva kune yekare Android View nyika uko maonero ari zvinhu zvakagara kwenguva refu, kushandiswazve uye kuchinjwa nekufamba kwenguva, ndosaka yako Compose pfungwa ichinzwa yakasikwa muFlutter.
Pasi pehodhi, marongero mumafuremu ese ari maviri anotevera yakafanana inotyairwa nemubereki, yakavakirwa patani. Mubereki anozviyera, anopfuudza zvisungo pasi, vana vanotora saizi vachiremekedza zvisungo izvozvo, uye mubereki anoisa vana vake. MuFlutter iwe uchaona izvi zvichiratidzwa zvakananga se BoxConstraints; muCompose inobatwa muMeasurePolicy kuita. Muzviitiko zvose zviri zviviri, vabereki vanogona kuganhurira vana—mawijeti haagoni kungosarudza saizi ipi neipi kana nzvimbo yavanoda.
Kugadzira app: yekupinda nzvimbo, scaffolding uye marongero
Pa Android neCompose, nzvimbo yako yekupinda inowanzova Activity (kazhinji a ComponentActivity) kwaunofona setContent kuti utore zvinyorwa zvako. Kubva ipapo iwe unovaka muti unogona kuumbwa, kazhinji uchitanga ne MaterialTheme uye chikafu kana chikafu chinotsanangura chimiro chako chepamusoro-soro.
MuFlutter, nzvimbo yekupinda iDart main basa rinofona runApp nemudzi wewidget yechishandiso chako. Mudzi iwoyo unowanzo a MaterialApp or WidgetsApp widget, iyo inomisikidza nzira, theming, nzvimbo uye base navigator. Yekutanga "skrini" yaunoratidza kazhinji inoshandisa a Scaffold widget, iyo inoita basa rakafanana ne Scaffold mune Material 3 Gadzira: inokupa iwe app bar, muviri, inoyangarara chiitiko bhatani, madhirowa uye zvichingodaro.
Kune mameseji akareruka uye akadzikama zvemukati, Nyora inogona kusarudzika kuputira zvemukati-kufananidza saizi kune yemukati zvemukati-asi mazhinji eFlutter majeti achitadza kutora yakawanda inowanikwa kunze kwekunge amanikidzwa. Somuenzaniso, kana ukaisa a Text inogona kuumbika mukati membiru, haizongozadzi hupamhi. MuFlutter, a Text mukati me Column inogona kuzvibata zvakasiyana zvichienderana nekumanikidza kwemubereki wayo. Kuisa pakati zvirimo muFlutter, iwe unogara uchiputira zvinhu mu Center widget, kana shandisa marongerwo majeti senge Align, Row, Column, uye Expanded zvakasanganiswa nekugadzirisa zvinhu.
Linear marongero mepu dzinenge dzakakwana: Compose ane Row uye Column, uye ndizvo zvinoita Flutter. MuFlutter unopasa vana sea List<Widget> uye kudzora nzvimbo uye kuenderana nezvivakwa zvakaita MainAxisAlignment uye CrossAxisAlignment. MuCompose, unovimba nayo horizontalArrangement, verticalArrangement, horizontalAlignment uye verticalAlignment. Nzira inobatsira yekufunga nezvazvo: zvivakwa zvinopera mu "Kuronga" mepu kune Flutter's main axis, uye izvo zvinopera mu "Alignment" mepu kune yemuchinjikwa axis.
Paunenge uchida hukama kana kupindirana marongero, nzira dzacho dzinofananidzwawo nepfungwa. Mu Android XML unogona kuwana RelativeLayout kana musanganiswa wedendere we LinearLayout uye FrameLayout. MuCompose unonyora Row, Column uye Box (kana kunyora chimiro chetsika). MuFlutter analogi ndiyo Row, Column uye Stack zvakasanganiswa nevana vane zvigaro uye sarudzo dzekugadzirisa. Yako yepfungwa modhi yekuronga zvinhu zvine chekuita neimwe inofamba ichipfuura isingachinjike.
Mabhatani, kupinza uye kudyidzana
MuJetpack Compose, kuvaka bhatani kazhinji zvinoreva kushandisa Button kana imwe yeayo Material akasiyana, ayo ari pasi peChinyorwa 3 anogadzirisa kune chaiyo kuita senge FilledTonalButton. Iwe unopa a onClick lambda uye sarudzo yemaitiro, kazhinji kuburikidza nemaparamita akadai colors kana ma modifiers epadding, hupamhi uye kurongeka.
MuFlutter, yakaenzana iri kushandisa majeti akafanana FilledButton, ElevatedButton, TextButton or OutlinedButton. Imwe neimwe inotora onPressed callback uye a child widget - kazhinji a Text. Iwe unogona kuzvigadzirisa nekupfuura a style Via ButtonStyle kana kushandisa dingindira repasi rose, iro rinokutendera kuti ugadzirise ruvara, chimiro, kukwirira uye saizi yemhuri yese yemabhatani.
Pakubata gestures, Compose inotsamira pane ma modifiers senge Modifier.clickable muzviitiko zvakawanda, asi iwe unogona zvakare kudonhedza pasi kune akasarudzika gesture detectors kana zvichidikanwa. Mitsipa mirefu, madhiri uye ma gestures anowanzo kugadzirwa kuburikidza neakazvitsaurira modifier APIs uye ekudyidzana masosi.
Flutter inoburitsa pachena GestureDetector Widget yaunoputira chero chinhu chisina kuvakwa-mukati ma gesture rutsigiro. Inopa huwandu hwakawanda hwecallbacks: onTap, onDoubleTap, onLongPress, onVerticalDragStart, onVerticalDragUpdate, onHorizontalDragEnd nevamwe vakawanda. Widgets kufanana ElevatedButton kare kufumura an onPressed chivakwa, asi kune yakazara tsika UI zvinhu zvaunogona kushandisa GestureDetector kana epamusoro-level majeti akadai InkWell kune Material ripple mhinduro.
Kupinza mameseji muFlutter kunotungamirwa ne TextField or TextFormField, ane manyorerwo anofambirana naCompose's TextField uye OutlinedTextField composables. Iwe unogadzirisa mazano, mavara, zvikanganiso uye miganhu uchishandisa an InputDecoration zvakafanana nemashandisiro aunoita TextFieldDefaults kana parameters paCompose text fields. Sezvakaita muCompose, iwe unowanzo ratidza mhosho meseji nekuchinja mamiriro uye kuvaka patsva yekushongedza kwete kugadzirisa nemaoko maonero.
Rondedzero, magidhi uye kupuruzira zvemukati
Jetpack Compose inopa nzira mbiri huru dzezvinyorwa: zviri nyore Column/Row nekudzokororwa kwezviunganidzwa zvidiki, uye LazyColumn/LazyRow/LazyVerticalGrid/LazyHorizontalGrid kune mazita makuru kana ane simba. Midziyo ine usimbe inongogadzira izvo zvinoonekwa, izvo zvinoita kuti basa rirambe riri pamusoro kana uchibata nezviuru zvezvinhu.
Flutter inotevera nzira imwechete diki-vs-hombe asi ine majeti akasiyana. Kune diki rondedzero inokodzera pachiratidziro unogona kungoshandisa a Column uye mepu data rako kune children. Kune chero chinopumburudza, iwe unosvikira ListView or GridView, nevanovaka vanogadzira vana neusimbe chete pazvinenge zvichidiwa.
Iyo yakajairika maitiro muFlutter ndeye ListView.builder, iyo inoratidzira Compose's simbe rondedzero zvinhu DSL. Unopa a itemCount uye itemBuilder callback; Flutter inodaidza muvaki iyeye ine index kubva pa0 kuenda itemCount - 1 pose panouya chinhu chitsva. Mukati memuvaki unogona kudzosa chero widget-kubva kune yakapusa ListTile ine mavara uye icon kune yakaoma, tsika rondedzero mitsara.
Kune magridi, Compose's LazyVerticalGrid uye LazyHorizontalGrid mepu kuFlutter's GridView widget. Panzvimbo pekupfuura makoramu anoverenga zvakananga kune grid, Flutter inowanzo shandisa nhume senge SliverGridDelegateWithFixedCrossAxisCount or SliverGridDelegateWithMaxCrossAxisExtent kudzora kuti masero anoiswa sei. Nhume idzi dzinoisa mitemo yakaita se "nhamba yemakoramu" kana "max cell wide," yakafanana mumweya neiyo grid size paramita aunoshandisa muCompose.
Mafambiro emupumburu anofananawo kune ese maturusi ezvishandiso. Zvinyorwa zveSimbe zveCompose zvinouya nekupuruzira yakabikwa mukati; hauzviputire mune mamwe midziyo yemipumburu. MuFlutter, akawanda rondedzero uye majeti egidhi pachawo anofambiswa, asi kune imwe chete, isingadzokorore zvemukati izvo zvinofanirwa kupuruzira iwe unogona kushandisa. SingleChildScrollView. Kuvaka mapeji anokwenenzverwa anozove nyaya yekugadzira dendere kana kugadzira masiraivha emamwe makesi ekushandisa epamusoro.
Adaptive uye inopindura UI mapatani
Compose inokupa akati wandei maitiro ekupindura dhizaini: tsika marongero, BoxWithConstraints, WindowSizeClass uye Material 3 adaptive raibhurari. Izvi zvinokutendera kuti uchinje kuumbwa kwako zvichienderana nenzvimbo iripo, chimiro uye chikamu chemudziyo, uye unogona kuzvisanganisa zvichienderana nekuoma kweprojekiti.
Flutter haiedze kutarisisa iwo maAPIs zvakananga, asi iyo yepasi pfungwa yakafanana: ongorora zvinomanikidza uye zviratidziro, wobva waisa dhizaini yako. Zvishandiso zviviri zvikuru ndezvi LayoutBuilder uye MediaQuery. LayoutBuilder pemipata BoxConstraints pasi kuti ugone kuchinjanisa kana kurongazve majeti pamusoro pehumwe hupamhi kana hurefu. MediaQuery inofumura saizi yescreen, kutaridzika, padding uye pixel density kune yakakwira-level breakpoints.
Panzvimbo pekuvavarira mepu imwe-kune-imwe pakati peCompose's adaptive solutions neFlutter's, zvinonyanya kushanda kufunga maererano nezvinodiwa nedhizaini yako. Kana uchinge waziva kuti UI yako inofanirwa kuchinjika sei pamafoni, mahwendefa uye matafura, unogona kutaura pfungwa iyoyo kuburikidza neCompose's. WindowSizeClass uye magadzirirwo anochinjika kana Flutter's constrain-driven uye media-inotyairwa bazi. Kufanana kwekugadzira kufunga-maAPI akasiyana.
State manejimendi: rangarira vs StatefulWidget uye nekupfuura
Jetpack Compose zvitoro ephemeral UI state uchishandisa remember uye vane hurumende vakadai mutableStateOf, kazhinji inosanganiswa ne ViewModel uye zvivakwa zvezvivakwa zvenguva refu-yakararama nyika. Kana nyika yachinja, recomposition inoitika uye izvo zvinosanganiswa zvinowana hunyowani hutsva.
Flutter's low-level state story inotenderera StatefulWidget uye yakabatana nayo State chinhu. Iwe unotsanangura widget inoda kubata nyika nekuwedzera StatefulWidget, wobva waisa imwe State<MyWidget> kirasi yekuchengetedza minda inoshanduka. Pese paunogadzirisa iwo minda, unofona setState(), iyo inoratidza icho chikamu chemuti wewidget sechakasviba uye chinokonzeresa kuvakazve. Panhanho iyi zvakangofanana nekuchengeta Compose state ne remember uye zvinoumba zvisingashande kana tsika dzachinja.
Kune mamwe maapplication akaoma, Flutter inotsamira zvakanyanya panharaunda uye yekutanga-bato mapatani: Provider, Riverpod, Bloc, Redux-style zvitoro nezvimwe. Aya anoita seanalogi yeako Android zvivakwa stacks: ViewModel + LiveData/Flow + repositories muCompose mapurojekiti. Ivo vanoisa pakati pebhizinesi logic uye vanofumura reactive hova dze data dzinotyaira widget inovaka. Kubva kuKunyora kumashure, unowana akawanda eaya mapatani anozivikanwa kunyangwe maAPI akasiyana.
Imwe pfungwa inowanzo shamisa vagadziri veAndroid ndeyekuti ese ari maviri asina chimiro uye ane hunyanzvi majeti muFlutter anovaka patsva kazhinji-zvichida furemu yega yega panguva yemifananidzo. Musiyano hausi wekuvakazve frequency asi nezve iyo inoshanduka inochengeterwa nyika: StatefulWidget inokupa shamwari State chinhu chinosara chichivakwazve, senge sei remember inoita kuti hunhu hurambe huripo muCompose.
Dhirowa, animation uye polish yekuona
Kana iwe wakamboshanda zvakananga ne Android's Canvas uye Drawable, Compose's Canvas composable zvichida akanzwa zvakananga. Inopa nzira yekuzivisa yekudhirowa maumbirwo, mifananidzo uye zvinyorwa muKotlin, ichivanza yakawanda yemhemberero yakakosha yetsika dzechinyakare maonero.
Flutter inofumura yakafanana yekudhirowa pamusoro kuburikidza ne Canvas API, inowanikwa kuburikidza CustomPaint uye CustomPainter. Iwe shandisa a CustomPainter kirasi yaunodarika iyo paint nzira yekukwevera pane canvas uchishandisa Paint zvinhu, nzira, kushandura uye zvichingodaro. Unobva wabatanidza mupendi iyeye kune a CustomPaint widget. Pasi pehodhi zvese Compose neFlutter zvinotsamira painjini yeSkia, saka izvo zvekutanga-mitsara, nzira, shaders-zvinotaridzika zvakajairwa kubva kuGoogle's 2D kupa.
Zvemaanimation, Flutter inotsamira pane yakajeka animation system yakavakirwa kutenderera AnimationController, Animation<T> uye Tweens, pamwe neakapfuma seti yemawijeti ane animated. Iwe unosimbisa mutongi (kazhinji ne SingleTickerProviderStateMixin ye vsync), tsanangura CurvedAnimations kana Tweens iyo mepu 0-1 kufambira mberi mune domain value, wobva waisa waya mumawijeti senge. FadeTransition, ScaleTransition, AnimatedBuilder kana majeti asina kujeka akadai AnimatedContainer. Iyo animation system inoburitsawo pachena AnimationStatus macallbacks kuita kutanga, kupedzisa kana kudzosera kumashure.
Jetpack Compose's animation APIs inotaura kubva kumusoro kusvika pasi, ine mabasa akadai animate*AsState, shanduko, uye kuoneka kwehupenyu. Panzvimbo pekutonga ma controller nemaoko muzviitiko zvakajairika, unotsanangura zvinotarisirwa nyika uye chimiro chinotyaira kududzira nekufamba kwenguva. Paunenge uchida mamwe mabespoke control, iwe uchiri kuwana yakaderera-level primitives, asi yakajairika nzira yakapfupika kupfuura yekare Android XML kana yakakosha animation kodhi.
Sezvineiwo, iwe unoshandisa ese maturusi ezvishandiso nenzira imwechete: chengeta majeti / zvinosanganiswa zvireruke uye zvakachena, kusundira nguva-kusiyana hunhu kuburikidza nazvo, uye rega chimiro chibate kududzira uye kusashanda. SeMugadziri weCompose, iyo yakawedzera kujeka kweFlutter's AnimationController inogona kunzwa chikoro chekare pakutanga, asi chinokutenga iwe kudzora kwakaringana pamusoro penguva, macurves uye orchestration.
Chimiro, dingindira, mafonti uye midziyo
Zvishandiso zvemazuva ano zvinorarama kana kufa papolilish, saka zvese Flutter neCompose zvinoisa zvakanyanya kukoshesa padingindira uye masitaera. Kugadzira kushandiswa MaterialTheme nezvirongwa zveruvara, typography uye tsananguro dzemaumbirwo, uye unogona kuseta madingindira kuti uwedzere kukosha kwemiti miduku-kusanganisira kumanikidza chiedza kana nzvimbo dzakasviba kumatunhu chaiwo.
MuFlutter, zvakaenzana ndizvo ThemeData akapfuura ku MaterialApp or Theme Widgets. Iwe unotsanangura mavara ekutanga, kupenya, typography uye chikamu-chaiwo madingindira senge. elevatedButtonTheme, textButtonTheme, appBarTheme nezvimwe. Iwe unogona kudarika matema munharaunda nekuputira ma subtrees mukati Theme majeti anokopa mubereki uye kugadzirisa mamwe minda. Chiedza uye rima modhi inogona kuchinjika padanho reapp nekupa theme uye darkTheme uye kutonga themeMode.
Mavara ekunyora inzvimbo inozivikanwa: mu Nyora iwe unogona kupfuudza zvivakwa zvakapusa zvakananga Text kana kupa a TextStyle chinhu. Flutter inoratidzira izvi ne Text widget inogamuchira a TextStyle kuburikidza yayo style paramende. TextStyle inovhara font mhuri, saizi, uremu, kupatsanura mavara, kureba kwemutsara, kushongedzwa nezvimwe. Iwe unogona kutsanangura pasi rose zvinyorwa zvinyorwa mukati ThemeData.textTheme uye uzvirevere kwese kwese, sekungoshandisa kwaungaita typography kubva MaterialTheme muCompose.
Mafonti nemifananidzo zvinobatwa kuburikidza nemidziyo kwete yechinyakare yeAndroid /res directory tree. Flutter haisimbisi yakasarudzika folda dhizaini; unozivisa maassets mukati pubspec.yaml uye wobva wazvinongedzera kubva kukodhi. Mifananidzo inowanzoiswa ne Image.asset(), iyo inogadzirisa kune chaiyo density bucket zvichibva pane devicePixelRatio. Mapikseli ane musoro anoita basa rakafanana dp pa Android, inobvisa muviri pixel density kure.
Kune mafonti echinyakare, Gadzira inoita kuti iwe ugone kurongedza mafonti zviwanikwa kana kuadhonza panguva yekumhanya kuburikidza nevanopa vakaita seGoogle Fonts, wobva waisa waya mukati. FontFamily uye typography. Flutter inoshandisa inenge yakafanana pateni: isa font mafaera mufodhi yemidziyo, nyora mukati pubspec.yaml, wobva wanongedza mhuri yemafonti nemazita mukati TextStyle. Kana iwe uchida runtime-inotorwa mafonti, kune akakurumbira google_fonts plugin inofumura mabasa eDart akatumidzwa zita remafonti-eg GoogleFonts.robotoTextTheme()-Kukurumidza kuaisa mudingindira rako.
Ese ari maviri ecosystem anobata tambo uye yenzvimbo seyekutanga-kirasi zvinonetsa, kunyange Flutter isina yakananga yakaenzana neiyo Android's XML tambo zviwanikwa. Pane kudaro, kuita kwakanakisisa kuchengeta shanduro dzirimo .arb mafaira uye woaisa waya kumusoro neFlutter localization toolchain. Kupinda kunobva kwaitika kuburikidza neakagadzirwa makirasi eDart, akaenzana nekushandisa R.string zviziviso mu Android kodhi.
Android platform concepts kuburikidza neFlutter lens
Beyond UI, mumwe wemibvunzo mikuru Compose Developers vane mamepu avo eruzivo rweAndroid kune zvivakwa zveFlutter. Neraki, mazhinji emazano epakati-mabasa, lifecycle, vavariro, basa rekumashure, zviwanikwa, networking-ine vakajeka vanofananidzira, kunyangwe iyo yepamusoro API inotaridzika zvakasiyana.
Mu Android, Activity uye Fragment ndiwo masikirini ako ekutanga uye midziyo; muFlutter zvese iwijeti, uye kufamba kunoitika kuburikidza Navigator uye Route zvinhu. Nzira inenge inoenderana nechiitwa kana chidimbu, asi kazhinji panongova nekutambira kumwe chete Activity pa Android iyo inomisikidza iyo Flutter injini. Iwe unosundidzira uye pop nzira pane iyo Navigator's stack, kungave kuburikidza nemazita nzira dzakatsanangurwa mukati MaterialApp kana kuburikidza neyakagadzirwa zvakananga PageRoute zviitiko zvakadai MaterialPageRoute.
Android's lifecycle callbacks (onCreate, onStart, onResume, nezvimwewo) hauna zvikokovonho zveimwe-ku-imwe muFlutter kodhi, asi unogona kuona app lifecycle ne WidgetsBindingObserver. Inofumura matunhu akadai resumed, inactive, paused uye detached, iyo inoenderana neinooneka, kumashure uye kuparadzwa kwe Android zvikamu. Kana iwe uchinyatsoda yakaderera-level lifecycle hooks yezvishandiso manejimendi, iwe unowanzo kuishandisa kudivi reku Android mu. FlutterActivity kana plugin, kwete muDart.
Zvinangwa zvinotamba mabasa maviri paAndroid: mu-app navigation uye cross-app kutaurirana. Sezvataurwa, Flutter haina chinangwa-yakavakirwa navigation API-Navigator inotsiva zvizere iyo mukati menyika yeDart. Pamabasa emuchinjika-app (yekutanga kamera, chinhonga faira, kubata zvinangwa zvekugovana), unowanzo shandisa maplugins anoputira anodiwa mafoni eAndroid (uye iOS). Kana pasina plugin iripo, unogona kunyora yako uchishandisa MethodChannels kutaura pakati peDart nekodhi kodhi, kutumira zvinangwa uye mhedzisiro semeseji.
Manzwisisiro ako ebasa rekumashure uye shinda zvakare inotamisa, asi zvekutanga zvinotaridzika zvakasiyana. Android inokusundidzira kuti ufambise network uye disk I/O kubva patambo huru uchishandisa coroutines, AsyncTask (legacy), WorkManager, JobScheduler, RxJava zvichingodaro. Dart, nekupesana, inoshandisa imwechete-yakapetwa chiitiko loop pane yega yega, ine async/kumirira I/O uye yakaparadzana yakaparadzana yeCPU-basa rinorema. Kune chero chinhu chandi/O-chakasungwa, ingomaka mabasa ako async, await iko kushanda uye rega chiitiko loop ichengetedze UI ichipindura; kune inorema CPU mabasa iwe unotenderera wega uye kutaurirana kuburikidza nemeseji inopfuura panzvimbo yekugovana ndangariro.
Pamberi petiweki, Flutter yakakurumbira http Package inoita basa rakafanana neOkHttp + Retrofit yemakesi ekushandisa ekutanga. Iyo inovanza yakawanda yeakaderera-level socket basa uye inosanganisa zvakasikwa neasync/kumirira. Nezvinodiwa zvakaoma iwe unogona kukwira kusvika kumapakeji senge dio, asi iyo yakakosha pateni inoramba iripo: ita async kufona, mirira mhedzisiro, gadziridza mamiriro ne setState() kana maneja wako wehurumende akasarudzwa, uye kuvakazve majeti akakanganisika.
Plugins, kuchengetedza, Firebase uye tooling
Pa Android iwe wajaira kuzivisa zvinotsamira muGradle; muFlutter unovazivisa mukati pubspec.yaml uye uzvitore kubva pub.dev. Iwo Gradle mafaira pasi pe android/ folda yepurojekiti yeFlutter inonyanya kubatanidzwa papuratifomu kana kana iwe uchida maraibhurari echinyakare - zuva nezuva kuvandudza kweapp kunogara muDart land.
Zvido zvakagovaniswa uye SQLite zvakare ine yakagadzirira-yakagadzirwa yakaenzana. Iko Android inopa SharedPreferences kune diki kiyi-kukosha kuchengetedza uye SQLite (kana Kamuri) yedata rakarongeka, Flutter inoputira izvi kuburikidza nemaplugins senge. shared_preferences uye sqflite. Aya mapulagi anobatanidza Android uye iOS maitiro kuitira kuti iwe ugone kushandisa imwe chete Dart API zvisinei nepuratifomu, uchiri kuvimba nezviri pasi pemaitirwo ekuzvarwa.
Firebase yekubatanidza yakafanana yakatwasuka uye yekutanga-kirasi. Mazhinji masevhisi eFirebase—Kutendesa, Firestore, Realtime Database, Cloud Messaging, Analytics, Remote Config uye nezvimwe—iine zviri pamutemo Flutter plugins inochengetwa neFirebase neFlutter zvikwata. Ivo vanoratidzira iyo yekufungidzira modhi kubva kuAndroid's Firebase SDKs asi neDart-idiomatic APIs. Kune mamwe niche Firebase maficha asina kuvharwa zvakananga, kune hutano ecosystem yewechitatu-bato plugins pa pub.dev.
Kugadzirisa uye kurodha, Flutter's DevTools suite inokupa yakapfuma bhokisi rematurusi rakanangana neiyo Android Studio's profiler uye Layout Inspector. Iwe unogona kuongorora muti wewidget, kuronda kuvakazve, tarisa ndangariro kugoverwa, kuongorora kuvuza uye kupatsanuka, uye nhanho kuburikidza neDart kodhi. Yakasanganiswa nerutsigiro rweIDE mu Android Studio uye VS Code, kupisa kurodha uye kupisa kutangazve, kutenderera kwemhinduro mukukura kweFlutter kunonzwa kunge kwakaomarara-uye kazhinji kuomarara-kupfuura zvawajaira neCompose.
Push zviziviso, imwe yakajairika Android kunetseka, inobatwa muFlutter kuburikidza nemapulagi senge firebase_messaging. Pasi pehodhi idzi dzinotaura neFirebase Cloud Messaging uye zviziviso zvechivanhu pa Android ne iOS, asi app yako logic inogara muDart API yakabatana. Kugadzirisa uye hunhu hwepuratifomu (senge zviteshi zvekuzivisa pa Android) zvichiri kukosha, uye ruzivo rwako rwuripo neruzivo rwepuratifomu inoramba ichinyanya kukosha.
Kunyangwe majeti epamba skrini pa Android, asingagone kuitwa chete muFlutter, anogona kuramba achibatanidza neFlutter kodhi. Iwe unowanzo kuvavaka neJetpack Glance kana XML marongero uye wozoshandisa pasuru yakadai home_widget kutaurirana neFlutter app yako, kugovera data uye kunyange kunyudza rasterized Flutter UI semufananidzo mukati meiyo widget yemuno. Iyo nzira yakasanganiswa inoita kuti uchengetedze yako huru ruzivo muFlutter uchiremekedza zvipingaidzo zvepuratifomu.
Ukatarisa kune ese akafanana aya, Jetpack Compose kuvandudza inopinda muFlutter haisi kutanga kubva zero zvachose. Manzwisisiro ako einozivisa UI, Android lifecycle, navigation, state, zviwanikwa uye async mepu dzebasa zvakajairika kunyika yeFlutter; izvo zvinonyanya kuchinja mazita, mutauro (Dart), uye multi-platform pfungwa. Kana iwe uchinge waisa mukati majeti uye Navigator semafungiro ekutanga, iyo yese stack inowanzo kudzvanya munzvimbo nekukurumidza.