Rujukan LazyColumn mengembalikan kedudukan permulaan
Editor PHP Baicao hari ini memperkenalkan anda kepada fungsi yang sangat praktikal - rujukan LazyColumn untuk kembali ke kedudukan permulaan. Semasa proses pembangunan, kita sering perlu membuat senarai tatal menegak, dan LazyColumn dilahirkan untuk ini. Ia boleh menjana item senarai secara dinamik mengikut keperluan, meningkatkan prestasi dan kecekapan aplikasi. Pada masa yang sama, LazyColumn juga boleh mengembalikan kedudukan permulaan senarai, yang memudahkan kami mengendalikan dan memproses kedudukan yang ditentukan. Sama ada anda sedang membangunkan aplikasi mudah alih atau aplikasi web, LazyColumn ialah alat yang sangat praktikal, mari kita lihatnya!
Kandungan soalan
Saya ada permohonan. Imej yang besar dan lazycolumn di bahagian bawah. Apabila saya pergi ke pautan keempat (atau kelima) dan kemudian kembali, lazycolumn saya berakhir pada kedudukan awal. Pautan 1 berada di bahagian atas. Bila nak link 4 lagi kena "twist".
Butang "Kembali" pada bar navigasi "Asli" adalah berbeza. Apabila saya kembali, lazycolumn sudah menunggu saya dalam borang yang saya tinggalkan.
Apakah yang perlu dilakukan dalam program untuk menjadikan butang atas berkelakuan sama seperti butang "kembali" pada bar navigasi?
Ini fail saya:
navgraph.kt
@composable fun navgraph(navcontroller: navhostcontroller){ navhost(navcontroller = navcontroller, startdestination = screens.contents.route ) { addcontentsscreen(navcontroller, this) addscreen1(navcontroller, this) addscreen2(navcontroller, this) addscreen3(navcontroller, this) addscreen4(navcontroller, this) addscreen5(navcontroller, this) } } private fun addcontentsscreen( navcontroller: navhostcontroller, navgraphbuilder: navgraphbuilder ) { navgraphbuilder.composable(route = screens.contents.route) { contentsscreen( navigatescreen1 = { navcontroller.navigate(screens.screens1.route) }, navigatescreen2 = { navcontroller.navigate(screens.screens2.route) }, navigatescreen3 = { navcontroller.navigate(screens.screens3.route) }, navigatescreen4 = { navcontroller.navigate(screens.screens4.route) }, navigatescreen5 = { navcontroller.navigate(screens.screens5.route) }, ) } } private fun addscreen1(navcontroller: navhostcontroller, navgraphbuilder: navgraphbuilder) { navgraphbuilder.composable(route = screens.screens1.route) { screen1 (navigatecontentsscreen = { navcontroller.navigate(screens.contents.route) }) } } private fun addscreen2(navcontroller: navhostcontroller, navgraphbuilder: navgraphbuilder) { navgraphbuilder.composable(route = screens.screens2.route) { screen2 (navigatecontentsscreen = { navcontroller.navigate(screens.contents.route) }) } } private fun addscreen3(navcontroller: navhostcontroller, navgraphbuilder: navgraphbuilder) { navgraphbuilder.composable(route = screens.screens3.route) { screen3 (navigatecontentsscreen = { navcontroller.navigate(screens.contents.route) }) } } private fun addscreen4(navcontroller: navhostcontroller, navgraphbuilder: navgraphbuilder) { navgraphbuilder.composable(route = screens.screens4.route) { screen4 (navigatecontentsscreen = { navcontroller.navigate(screens.contents.route) }) } } private fun addscreen5(navcontroller: navhostcontroller, navgraphbuilder: navgraphbuilder) { navgraphbuilder.composable(route = screens.screens5.route) { screen5 (navigatecontentsscreen = { navcontroller.navigate(screens.contents.route) }) } }
Skrin
sealed class screens(val route: string) { data object contents : screens("contents_screen") data object screens1 : screens("screen_1"); data object screens2 : screens("screen_2"); data object screens3 : screens("screen_3") data object screens4 : screens("screen_4"); data object screens5 : screens("screen_5"); }
screens.kt
class item(val link: () -> unit, val name: string) @composable fun contentslist(explanation: list<item>) { val liststate = rememberlazyliststate() lazycolumn(state = liststate) { items(explanation.size) { index -> val item = explanation[index] contentsbutton( onclick = item.link, text = item.name ) } } } @composable fun contentsscreen( navigatescreen1: () -> unit, navigatescreen2: () -> unit, navigatescreen3: () -> unit, navigatescreen4: () -> unit, navigatescreen5: () -> unit, ) { val listofquestions = listof( item( navigatescreen1, "screen1"), item( navigatescreen2, "screen2"), item( navigatescreen3, "screen3"), item( navigatescreen4, "screen4"), item( navigatescreen5, "screen5"), ) column { image( modifier = modifier.height(650.dp), painter = painterresource(id = r.drawable.cat), contentdescription = null, contentscale = contentscale.crop ) contentslist(listofquestions) } }
skrin4.kt
@OptIn(ExperimentalMaterial3Api::class) @Composable fun Screen4( navigateContentsScreen: () -> Unit, ) { val text = "Screen4" Scaffold( containerColor = lightGray, contentColor = darkGrey, topBar = { TopAppBar( modifier = Modifier.height(80.dp), title = { Box( Modifier.fillMaxHeight(), contentAlignment = Alignment.Center ) { Text( maxLines = 1, overflow = TextOverflow.Ellipsis, text = text, color = orange, ) } }, navigationIcon = { Box( Modifier.fillMaxHeight(), contentAlignment = Alignment.Center ) { IconButton( onClick = navigateContentsScreen ) { Icon( imageVector = Icons.Filled.ArrowBack, contentDescription = "Back", tint=orange, ) } } }, colors = TopAppBarDefaults.mediumTopAppBarColors( containerColor = darkGrey ) ) } ) { contentPadding -> Column( modifier = Modifier .fillMaxSize() .padding(contentPadding) .verticalScroll(rememberScrollState()), ) { Text( text = "Screen4", color = darkGrey, textAlign = TextAlign.Justify, modifier = Modifier.padding(24.dp) ) } } }
Saya mencuba dan mencari tetapi tidak menemui apa-apa...
Penyelesaian
Cuba tukar kod anda seperti berikut:
navGraphBuilder.composable(route = Screens.Screens4.route) { Screen4 (navigateContentsScreen = { navController.navigateUp() }) }
Apabila anda menggunakan navcontroller.navigate(screens.contents.route)
时,您将始终为该路由创建一个新的 backstackentry
dan destinasi baharu ini akan diwujudkan baru tanpa sebarang keadaan. Berhati-hati, anda akan membina susunan belakang yang besar dengan pendekatan semasa anda.
Menggunakan navcontroller.navigateup()
或 navcontroller.popbackstack()
anda akan mendapat destinasi sebenar sebelum ini. Lihat siaran stackoverflow ini untuk penjelasan tentang perbezaan.
Atas ialah kandungan terperinci Rujukan LazyColumn mengembalikan kedudukan permulaan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas





Ya, pengeluaran halaman H5 adalah kaedah pelaksanaan penting untuk pembangunan front-end, yang melibatkan teknologi teras seperti HTML, CSS dan JavaScript. Pemaju membina halaman H5 yang dinamik dan berkuasa dengan bijak menggabungkan teknologi ini, seperti menggunakan & lt; kanvas & gt; Tag untuk menarik grafik atau menggunakan JavaScript untuk mengawal tingkah laku interaksi.

Harga USD Bitcoin masa nyata Faktor yang menjejaskan harga bitcoin Petunjuk untuk meramalkan harga bitcoin masa depan Berikut adalah beberapa maklumat penting mengenai harga Bitcoin pada 2018-2024:

Kaedah penyesuaian simbol saiz semula dalam CSS bersatu dengan warna latar belakang. Dalam perkembangan harian, kita sering menghadapi situasi di mana kita perlu menyesuaikan butiran antara muka pengguna, seperti menyesuaikan ...

Mengenai sebab-sebab dan penyelesaian untuk memaparkan unsur-unsur blok sebaris. Apabila menulis susun atur laman web, kami sering menghadapi masalah paparan yang kelihatan aneh. Bandingkan ...

Cara menggunakan JavaScript atau CSS untuk mengawal bahagian atas dan akhir halaman dalam tetapan percetakan penyemak imbas. Dalam tetapan percetakan penyemak imbas, ada pilihan untuk mengawal sama ada paparan ...

Bagaimana untuk mencapai kesan lengkung 45 darjah segmen? Dalam proses melaksanakan segmen, bagaimana membuat sempadan yang betul berubah menjadi lengkung 45 darjah ketika mengklik butang kiri, dan titik ...

Petua untuk melaksanakan kesan segmen dalam reka bentuk antara muka pengguna, Segmenter adalah elemen navigasi biasa, terutamanya dalam aplikasi mudah alih dan laman web responsif. …

Masalah pembukaan kontena kerana peninggalan teks yang berlebihan di bawah susun atur flex dan penyelesaian digunakan ...