|
@@ -1,41 +1,60 @@
|
|
|
package com.zaojiao.app.feat.home.plan
|
|
|
|
|
|
-import androidx.compose.foundation.background
|
|
|
-import androidx.compose.foundation.layout.Box
|
|
|
+import androidx.compose.foundation.ExperimentalFoundationApi
|
|
|
import androidx.compose.foundation.layout.Column
|
|
|
import androidx.compose.foundation.layout.fillMaxSize
|
|
|
+import androidx.compose.foundation.layout.navigationBarsPadding
|
|
|
+import androidx.compose.foundation.layout.statusBarsPadding
|
|
|
+import androidx.compose.foundation.pager.HorizontalPager
|
|
|
+import androidx.compose.foundation.pager.rememberPagerState
|
|
|
+import androidx.compose.material3.Tab
|
|
|
+import androidx.compose.material3.TabRow
|
|
|
import androidx.compose.material3.Text
|
|
|
import androidx.compose.runtime.Composable
|
|
|
-import androidx.compose.runtime.getValue
|
|
|
-import androidx.compose.ui.Alignment
|
|
|
+import androidx.compose.runtime.rememberCoroutineScope
|
|
|
import androidx.compose.ui.Modifier
|
|
|
-import androidx.compose.ui.graphics.Color
|
|
|
-import androidx.hilt.navigation.compose.hiltViewModel
|
|
|
-import androidx.lifecycle.compose.collectAsStateWithLifecycle
|
|
|
-import com.zaojiao.app.feat.design.StatePage
|
|
|
-import com.zaojiao.app.feat.design.UiState
|
|
|
+import kotlinx.coroutines.launch
|
|
|
|
|
|
@Composable
|
|
|
-internal fun HomePlanRoute(
|
|
|
- viewModel: HomePlanViewModel = hiltViewModel(),
|
|
|
-) {
|
|
|
- val uiState by viewModel.uiState.collectAsStateWithLifecycle()
|
|
|
-
|
|
|
- HomePlanPage(uiState = uiState)
|
|
|
+internal fun HomePlanRoute() {
|
|
|
+ HomePlanPage()
|
|
|
}
|
|
|
|
|
|
+@OptIn(ExperimentalFoundationApi::class)
|
|
|
@Composable
|
|
|
-fun HomePlanPage(uiState: UiState<HomePlanState>) {
|
|
|
- StatePage(uiState = uiState) {
|
|
|
- Column(
|
|
|
- modifier = Modifier
|
|
|
- .fillMaxSize()
|
|
|
- .background(color = Color.Green)
|
|
|
+fun HomePlanPage() {
|
|
|
+ val tabTitles = listOf("学习计划", "全部课程")
|
|
|
+ val pageState = rememberPagerState()
|
|
|
+ val coroutineScope = rememberCoroutineScope()
|
|
|
+
|
|
|
+ Column(
|
|
|
+ modifier = Modifier
|
|
|
+ .statusBarsPadding()
|
|
|
+ .fillMaxSize()
|
|
|
+ ) {
|
|
|
+ TabRow(selectedTabIndex = pageState.currentPage) {
|
|
|
+ tabTitles.forEachIndexed { index, title ->
|
|
|
+ Tab(selected = pageState.currentPage == index,
|
|
|
+ onClick = {
|
|
|
+ coroutineScope.launch {
|
|
|
+ pageState.scrollToPage(index)
|
|
|
+
|
|
|
+ }
|
|
|
+ }) {
|
|
|
+ Text(text = title)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ HorizontalPager(
|
|
|
+ state = pageState,
|
|
|
+ pageCount = 2,
|
|
|
+ userScrollEnabled = true,
|
|
|
) {
|
|
|
- todayPlanList.forEach {
|
|
|
- Text(
|
|
|
- text = "abcdefg",
|
|
|
- )
|
|
|
+ when (it) {
|
|
|
+ 0 -> HomePlanIndexPage()
|
|
|
+ 1 -> HomePlanTotalPage()
|
|
|
+ else -> TODO()
|
|
|
}
|
|
|
}
|
|
|
}
|