@@ -4,21 +4,19 @@ import androidx.compose.foundation.background
44import androidx.compose.foundation.layout.*
55import androidx.compose.foundation.lazy.LazyRow
66import androidx.compose.foundation.lazy.itemsIndexed
7- import androidx.compose.material.Button
8- import androidx.compose.material.ButtonDefaults
97import androidx.compose.material.MaterialTheme
108import androidx.compose.material.Text
119import androidx.compose.runtime.Composable
1210import androidx.compose.runtime.LaunchedEffect
13- import androidx.compose.runtime.snapshotFlow
11+ import androidx.compose.runtime.collectAsState
1412import androidx.compose.ui.Alignment
1513import androidx.compose.ui.Modifier
1614import androidx.compose.ui.graphics.Color
1715import androidx.compose.ui.text.font.FontWeight
1816import androidx.compose.ui.unit.dp
1917import androidx.compose.ui.unit.sp
20- import kotlinx.coroutines.flow.distinctUntilChanged
2118import org.succlz123.app.acfun.base.AcBackButton
19+ import org.succlz123.app.acfun.base.LoadingFailView
2220import org.succlz123.app.acfun.base.LoadingView
2321import org.succlz123.app.acfun.theme.ColorResource
2422import org.succlz123.app.acfun.ui.main.tab.item.MainHomeContentItem
@@ -50,56 +48,28 @@ fun AreaContentScreen() {
5048 }
5149
5250 Box (modifier = Modifier .fillMaxSize().background(Color .White )) {
53- val state = viewModel.areaVideosState.value
51+ val state = viewModel.areaVideosState.collectAsState(). value
5452 when (state) {
5553 is ScreenResult .Uninitialized -> {
5654 LoadingView ()
5755 }
5856
5957 is ScreenResult .Fail -> {
60- Column (
61- modifier = Modifier .fillMaxSize(),
62- verticalArrangement = Arrangement .Center ,
63- horizontalAlignment = Alignment .CenterHorizontally
64- ) {
65- Text (
66- text = " 数据加载失败!" , fontSize = 32 .sp, fontWeight = FontWeight .Bold
67- )
68- Spacer (modifier = Modifier .height(48 .dp))
69- Row {
70- Button (colors = ButtonDefaults .outlinedButtonColors(
71- backgroundColor = Color .Black ,
72- contentColor = Color .White ,
73- disabledContentColor = Color .Transparent
74- ), contentPadding = PaddingValues (
75- start = 32 .dp, top = 10 .dp, end = 32 .dp, bottom = 10 .dp
76- ), onClick = {
77- navigationScene.pop()
78- }) {
79- Text (
80- text = " 退出" , fontSize = 18 .sp
81- )
82- }
83- Spacer (modifier = Modifier .width(32 .dp))
84- Button (colors = ButtonDefaults .outlinedButtonColors(
85- backgroundColor = Color .Black ,
86- contentColor = Color .White ,
87- disabledContentColor = Color .Transparent
88- ), contentPadding = PaddingValues (
89- start = 32 .dp, top = 10 .dp, end = 32 .dp, bottom = 10 .dp
90- ), onClick = {
91- viewModel.getData(id)
92- }) {
93- Text (
94- text = " 重试" , fontSize = 18 .sp
95- )
96- }
97- }
98- }
58+ LoadingFailView (cancelClick = { navigationScene.pop() }, okClick = {
59+ viewModel.getData(id)
60+ })
9961 }
10062
10163 is ScreenResult .Success , is ScreenResult .Loading -> {
102- val acContentList = state.invoke()
64+ LaunchedEffect (Unit ) {
65+ viewModel.rankSelectIndex.collect {
66+ viewModel.getData(
67+ id,
68+ ArrayList (AreaContentViewModel .MAP .keys.toList())[viewModel.rankSelectIndex.value],
69+ force = true
70+ )
71+ }
72+ }
10373 Column (
10474 modifier = Modifier .fillMaxSize().padding(0 .dp, 48 .dp, 0 .dp, 0 .dp),
10575 horizontalAlignment = Alignment .CenterHorizontally
@@ -133,24 +103,11 @@ fun AreaContentScreen() {
133103 }
134104 }
135105 Spacer (modifier = Modifier .height(16 .dp))
136-
137- LaunchedEffect (Unit ) {
138- viewModel.getData(
139- id, ArrayList (AreaContentViewModel .MAP .keys.toList())[viewModel.rankSelectIndex.value]
140- )
141- snapshotFlow { viewModel.rankSelectIndex.value }.distinctUntilChanged().collect {
142- viewModel.getData(
143- id,
144- ArrayList (AreaContentViewModel .MAP .keys.toList())[viewModel.rankSelectIndex.value],
145- force = true
146- )
147- }
148- }
106+ val acContentList = state.invoke()
149107 if (acContentList.isNullOrEmpty()) {
150108 LoadingView ()
151109 } else {
152- val content = ArrayList (acContentList)
153- MainHomeContentItem (result = ScreenResult .Success (content),
110+ MainHomeContentItem (result = ScreenResult .Success (acContentList),
154111 isExpandedScreen = isExpandedScreen,
155112 onRefresh = {
156113 viewModel.getData(
0 commit comments