11package com.wzq.jd.compose.app.page.home
22
3- import androidx.compose.foundation.layout.Box
3+ import androidx.compose.foundation.ExperimentalFoundationApi
4+ import androidx.compose.foundation.layout.fillMaxSize
45import androidx.compose.foundation.layout.padding
6+ import androidx.compose.foundation.pager.HorizontalPager
7+ import androidx.compose.foundation.pager.rememberPagerState
58import androidx.compose.material.icons.Icons
69import androidx.compose.material.icons.filled.AccountCircle
710import androidx.compose.material.icons.filled.Home
@@ -17,43 +20,55 @@ import androidx.compose.material3.Scaffold
1720import androidx.compose.material3.Text
1821import androidx.compose.material3.TopAppBarDefaults
1922import androidx.compose.runtime.Composable
20- import androidx.compose.runtime.mutableIntStateOf
21- import androidx.compose.runtime.remember
23+ import androidx.compose.runtime.rememberCoroutineScope
2224import androidx.compose.ui.Modifier
2325import com.wzq.jd.compose.app.page.NavActions
26+ import kotlinx.coroutines.launch
2427
2528/* *
2629 * create by wzq on 2023/11/24
2730 *
2831 */
32+ @OptIn(ExperimentalFoundationApi ::class )
2933@Composable
3034fun HomeScreen (viewModel : HomeViewModel , navActions : NavActions ) {
31- val pagerState = remember { mutableIntStateOf(0 ) }
35+ val pagerState = rememberPagerState(0 ) { 3 }
36+ val localScope = rememberCoroutineScope()
3237
3338 Scaffold (topBar = {
3439 HomeTopBar {
3540 navActions.toSearch()
3641 }
3742 }, bottomBar = {
3843 HomeBottomBar { index ->
39- pagerState.intValue = index
44+ localScope.launch {
45+ pagerState.scrollToPage(index)
46+ }
4047 }
4148 }) { paddingValues ->
42- Box (modifier = Modifier .padding(paddingValues)) {
43- when (pagerState.intValue) {
44- 0 -> HomeIndexPage (viewModel.homeList) {
45- navActions.toWebScreen(it)
46- }
49+ HorizontalPager (
50+ state = pagerState, modifier = Modifier
51+ .padding(paddingValues)
52+ .fillMaxSize(),
53+ beyondBoundsPageCount = pagerState.pageCount
54+ ) { currentPagerNum ->
55+ when (currentPagerNum) {
56+ 0 -> HomeIndexPage (
57+ articleList = viewModel.homeList,
58+ onItemClick = { navActions.toWebScreen(it) })
59+
60+ 1 -> HomeProjectPage (
61+ projectList = viewModel.projectList,
62+ navigateToWeb = { navActions.toWebScreen(it) })
4763
48- 1 -> HomeProjectPage (projectList = viewModel.projectList) {
49- navActions.toWebScreen(it)
50- }
64+ 2 -> HomeCategoryPage (
65+ categories = viewModel.categories,
66+ onItemClick = { categories, i -> navActions.toCategory(i, categories) })
5167
52- 2 -> HomeCategoryPage (categories = viewModel.categories) { item, childIndex ->
53- navActions.toCategory(childIndex, item)
54- }
68+ else -> throw Exception (" todo" )
5569 }
5670 }
71+
5772 }
5873}
5974
0 commit comments