Elio Maroun
07/03/2023, 12:52 PMefemoney
07/03/2023, 1:51 PMmyanmarking
07/03/2023, 3:00 PMElio Maroun
07/03/2023, 8:27 PM@Composable
fun LocationDetailViewTopBar(modifier: Modifier = Modifier) {
val navController = LocalNavController.current
val scrollState = rememberScrollState()
val listState = rememberLazyListState()
val EXPANDED_TOP_BAR_HEIGHT = 200.dp
val COLLAPSED_TOP_BAR_HEIGHT = 56.dp
val overlapHeightPx = with(LocalDensity.current) {
EXPANDED_TOP_BAR_HEIGHT.toPx() - COLLAPSED_TOP_BAR_HEIGHT.toPx()
}
val isCollapsed: Boolean by remember {
derivedStateOf {
val isFirstItemHidden = listState.firstVisibleItemScrollOffset > overlapHeightPx
isFirstItemHidden || listState.firstVisibleItemIndex > 0
}
}
Box() {
LocationDetailCollapsedTopBar1(
modifier = Modifier.zIndex(2f),
isCollapsed = isCollapsed,
locationName = "Fahed Supermarket Jounieh"
)
Spacer(modifier = Modifier.size(8.dp))
LazyColumn(
state = listState,
modifier = Modifier
.heightIn( max=216.dp)
.fillMaxWidth()
) {
item {
LocationDetailExpandedTopBar()
Spacer(modifier = Modifier.size(16.dp))
}
}
}
}
Elio Maroun
07/03/2023, 8:28 PMprivate class LocationDetailTab(val title: String, val content: @Composable () -> Unit)
private val locationTabs = listOf<LocationDetailTab>(
LocationDetailTab("Location", {}),
LocationDetailTab("Items", { ItemsList() }),
LocationDetailTab("Reviews", {})
)
@Composable
fun LocationDetailTabs(modifier: Modifier = Modifier) {
val selectedTab = rememberSaveable { mutableStateOf(0) }
TabRow(selectedTabIndex = selectedTab.value,
containerColor = Color.Transparent,
divider = {},
indicator = {
Box(
Modifier
.tabIndicatorOffset(it[selectedTab.value])
.fillMaxWidth()
.height(4.dp)
.padding(horizontal = 8.dp)
.clip(RoundedCornerShape(topEnd = 4.dp, topStart = 4.dp))
.background(color = MaterialTheme.colorScheme.primary)
)
}) {
locationTabs.forEachIndexed { i, info ->
Tab(
selected = selectedTab.value == i,
onClick = { selectedTab.value = i },
selectedContentColor = Color.White,
unselectedContentColor = MaterialTheme.colorScheme.onSurfaceVariant,
) { Text(info.title, modifier = Modifier.padding(bottom = 14.dp, top = 18.dp)) }
}
}
Column {
locationTabs[selectedTab.value].content()
}
}
Elio Maroun
07/03/2023, 8:29 PMElio Maroun
07/03/2023, 8:29 PM@Composable
fun LocationDetailView() {
Column(modifier = Modifier.background(Color.Black)) {
LazyColumn {
stickyHeader {
LocationDetailViewTopBar(modifier = Modifier.wrapContentSize())
Spacer(modifier = Modifier.size(32.dp))
}
item {
LocationDetailTabs(modifier = Modifier.wrapContentHeight())
}
}
}Elio Maroun
07/03/2023, 8:30 PMElio Maroun
07/03/2023, 8:31 PMElio Maroun
07/04/2023, 7:55 AMElio Maroun
07/04/2023, 9:42 AMmyanmarking
07/04/2023, 9:46 AM