@@ -13,6 +13,7 @@ import androidx.compose.ui.Alignment
1313import androidx.compose.ui.Modifier
1414import androidx.compose.ui.graphics.Color
1515import androidx.compose.ui.unit.dp
16+ import org.succlz123.app.acfun.api.bean.HomeRecommendItem
1617import org.succlz123.app.acfun.base.AcDivider
1718import org.succlz123.app.acfun.theme.ColorResource
1819import org.succlz123.app.acfun.ui.main.tab.item.MainHomeContentItem
@@ -28,53 +29,73 @@ fun MainHomeTab(modifier: Modifier, isExpandedScreen: Boolean) {
2829 }
2930 val rememberSelectedItem = remember { homeVm.rightSelectedCategoryItem }
3031 Column (modifier = modifier.background(Color .White )) {
31- Column (modifier = Modifier .padding(12 .dp, 12 .dp)) {
32- LazyRow (
33- contentPadding = PaddingValues (start = 12 .dp, end = 12 .dp),
34- horizontalArrangement = Arrangement .spacedBy(36 .dp)
35- ) {
36- itemsIndexed(HomeAreaViewModel .CATEGORY ) { index, item ->
37- Column (
38- horizontalAlignment = Alignment .CenterHorizontally ,
39- modifier = Modifier .noRippleClickable {
40- rememberSelectedItem.value = index
41- },
42- ) {
43- Text (
44- text = item.name.orEmpty(),
45- style = MaterialTheme .typography.h3,
46- color = if (index == rememberSelectedItem.value) {
32+ showHomeTitle(change = { rememberSelectedItem.value = it }) {
33+ rememberSelectedItem.value
34+ }
35+ AcDivider ()
36+ val recommendMap = homeVm.recommendMap
37+ showHomeContent(isExpandedScreen, { rememberSelectedItem.value = it }, { rememberSelectedItem.value }, homeVm) {
38+ recommendMap[HomeAreaViewModel .CATEGORY [rememberSelectedItem.value].id] ? : ScreenResult .Uninitialized
39+ }
40+ LaunchedEffect (rememberSelectedItem.value) {
41+ homeVm.getData()
42+ }
43+ }
44+ }
45+
46+ @Composable
47+ fun showHomeTitle (change : (Int ) -> Unit , cb : () -> Int ) {
48+ Column (modifier = Modifier .padding(12 .dp, 12 .dp)) {
49+ LazyRow (
50+ contentPadding = PaddingValues (start = 12 .dp, end = 12 .dp),
51+ horizontalArrangement = Arrangement .spacedBy(36 .dp)
52+ ) {
53+ itemsIndexed(HomeAreaViewModel .CATEGORY ) { index, item ->
54+ Column (
55+ horizontalAlignment = Alignment .CenterHorizontally ,
56+ modifier = Modifier .noRippleClickable {
57+ change.invoke(index)
58+ },
59+ ) {
60+ Text (
61+ text = item.name.orEmpty(),
62+ style = MaterialTheme .typography.h3,
63+ color = if (index == cb.invoke()) {
64+ ColorResource .acRed
65+ } else {
66+ Color .Black
67+ }
68+ )
69+ Spacer (modifier = Modifier .height(3 .dp))
70+ Box (
71+ modifier = Modifier .height(3 .dp).width(22 .dp).background(
72+ if (index == cb.invoke()) {
4773 ColorResource .acRed
4874 } else {
49- Color .Black
75+ Color .Transparent
5076 }
5177 )
52- Spacer (modifier = Modifier .height(3 .dp))
53- Box (
54- modifier = Modifier .height(3 .dp).width(22 .dp).background(
55- if (index == rememberSelectedItem.value) {
56- ColorResource .acRed
57- } else {
58- Color .Transparent
59- }
60- )
61- )
62- }
78+ )
6379 }
6480 }
6581 }
66- AcDivider ()
67- LaunchedEffect (rememberSelectedItem.value) {
68- homeVm.getData()
69- }
70- val result =
71- homeVm.recommendMap[HomeAreaViewModel .CATEGORY [rememberSelectedItem.value].id] ? : ScreenResult .Uninitialized
72- MainHomeContentItem (result = result,
73- isExpandedScreen = isExpandedScreen,
74- rememberSelectedItem = rememberSelectedItem,
75- onRefresh = {
76- homeVm.getData(true )
77- })
7882 }
7983}
8084
85+ @Composable
86+ fun showHomeContent (
87+ isExpandedScreen : Boolean ,
88+ changeTitleSelectIfExist : (Int ) -> Unit ,
89+ selectTitleIfExist : () -> Int ,
90+ homeVm : HomeAreaViewModel ,
91+ cb : () -> ScreenResult <ArrayList <HomeRecommendItem >>
92+ ) {
93+ MainHomeContentItem (result = cb.invoke(),
94+ changeTitleSelectIfExist = changeTitleSelectIfExist,
95+ selectTitleIfExist = selectTitleIfExist,
96+ isExpandedScreen = isExpandedScreen,
97+ onRefresh = {
98+ homeVm.getData(true )
99+ })
100+ }
101+
0 commit comments