feat: update demo

This commit is contained in:
2023-11-27 08:25:35 +08:00
parent 898f3e91f9
commit 65e01c2e51

View File

@@ -20,13 +20,18 @@
* This file is created by fankes on 2023/11/5. * This file is created by fankes on 2023/11/5.
*/ */
import androidx.compose.foundation.ExperimentalFoundationApi
import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.width import androidx.compose.foundation.layout.width
import androidx.compose.foundation.pager.HorizontalPager
import androidx.compose.foundation.pager.rememberPagerState
import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.verticalScroll import androidx.compose.foundation.verticalScroll
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
@@ -35,6 +40,7 @@ import androidx.compose.runtime.ReadOnlyComposable
import androidx.compose.runtime.getValue import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember import androidx.compose.runtime.remember
import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.runtime.setValue import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
@@ -43,6 +49,7 @@ import com.highcapable.flexiui.Colors
import com.highcapable.flexiui.FlexiTheme import com.highcapable.flexiui.FlexiTheme
import com.highcapable.flexiui.blueColors import com.highcapable.flexiui.blueColors
import com.highcapable.flexiui.component.AreaBox import com.highcapable.flexiui.component.AreaBox
import com.highcapable.flexiui.component.AreaColumn
import com.highcapable.flexiui.component.AutoCompleteOptions import com.highcapable.flexiui.component.AutoCompleteOptions
import com.highcapable.flexiui.component.BackspaceTextField import com.highcapable.flexiui.component.BackspaceTextField
import com.highcapable.flexiui.component.Button import com.highcapable.flexiui.component.Button
@@ -51,9 +58,11 @@ import com.highcapable.flexiui.component.DropdownList
import com.highcapable.flexiui.component.DropdownMenuItem import com.highcapable.flexiui.component.DropdownMenuItem
import com.highcapable.flexiui.component.PasswordTextField import com.highcapable.flexiui.component.PasswordTextField
import com.highcapable.flexiui.component.RadioButton import com.highcapable.flexiui.component.RadioButton
import com.highcapable.flexiui.component.ScrollableTabRow
import com.highcapable.flexiui.component.Slider import com.highcapable.flexiui.component.Slider
import com.highcapable.flexiui.component.Surface import com.highcapable.flexiui.component.Surface
import com.highcapable.flexiui.component.Switch import com.highcapable.flexiui.component.Switch
import com.highcapable.flexiui.component.Tab
import com.highcapable.flexiui.component.Text import com.highcapable.flexiui.component.Text
import com.highcapable.flexiui.component.TextField import com.highcapable.flexiui.component.TextField
import com.highcapable.flexiui.defaultColors import com.highcapable.flexiui.defaultColors
@@ -65,6 +74,7 @@ import com.highcapable.flexiui.pinkColors
import com.highcapable.flexiui.purpleColors import com.highcapable.flexiui.purpleColors
import com.highcapable.flexiui.redColors import com.highcapable.flexiui.redColors
import com.highcapable.flexiui.yellowColors import com.highcapable.flexiui.yellowColors
import kotlinx.coroutines.launch
import kotlin.math.roundToInt import kotlin.math.roundToInt
@Composable @Composable
@@ -73,7 +83,12 @@ fun App() {
FlexiTheme(colors = themeColor.value) { FlexiTheme(colors = themeColor.value) {
Surface { Surface {
Column(horizontalAlignment = Alignment.CenterHorizontally) { Column(horizontalAlignment = Alignment.CenterHorizontally) {
AreaBox(modifier = Modifier.weight(1f)) { ContentView() } AreaBox(modifier = Modifier.weight(0.82f)) { ContentView() }
Spacer(Modifier.padding(5.dp))
AreaColumn(
modifier = Modifier.weight(0.18f),
style = AreaBox.style.copy(padding = PaddingValues(3.dp))
) { TabPagerView() }
Spacer(Modifier.padding(10.dp)) Spacer(Modifier.padding(10.dp))
ThemeColorsView(themeColor) ThemeColorsView(themeColor)
} }
@@ -201,6 +216,28 @@ private fun ContentView() {
} }
} }
@OptIn(ExperimentalFoundationApi::class)
@Composable
private fun TabPagerView() {
val pageCount = 10
val state = rememberPagerState(pageCount = { pageCount })
val scope = rememberCoroutineScope()
ScrollableTabRow(
selectedTabIndex = state.currentPage,
pagerState = state
) {
for (index in 0 until pageCount)
Tab(
selected = state.currentPage == index,
onClick = { scope.launch { state.animateScrollToPage(index) } },
) { Text(text = "Tab ${index + 1}") }
}
HorizontalPager(
modifier = Modifier.fillMaxSize(),
state = state,
) { index -> Box(modifier = Modifier.fillMaxSize(), contentAlignment = Alignment.Center) { Text(text = "Page ${index + 1}") } }
}
@Composable @Composable
private fun ThemeColorsView(themeColor: MutableState<Colors>) { private fun ThemeColorsView(themeColor: MutableState<Colors>) {
Text(text = "Here are some theme color tests.") Text(text = "Here are some theme color tests.")