mirror of
https://github.com/AllanWang/Frost-for-Facebook.git
synced 2024-09-18 21:12:24 +02:00
Link nested scrolling connection
This commit is contained in:
parent
1d14386d86
commit
f5b003298e
@ -32,6 +32,8 @@ import androidx.compose.material3.NavigationDrawerItemDefaults
|
||||
import androidx.compose.material3.Scaffold
|
||||
import androidx.compose.material3.Text
|
||||
import androidx.compose.material3.TopAppBar
|
||||
import androidx.compose.material3.TopAppBarDefaults
|
||||
import androidx.compose.material3.TopAppBarScrollBehavior
|
||||
import androidx.compose.material3.rememberDrawerState
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.getValue
|
||||
@ -41,6 +43,7 @@ import androidx.compose.runtime.rememberCoroutineScope
|
||||
import androidx.compose.runtime.setValue
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.graphics.Color
|
||||
import androidx.compose.ui.input.nestedscroll.NestedScrollConnection
|
||||
import androidx.compose.ui.platform.LocalContext
|
||||
import androidx.compose.ui.tooling.preview.Preview
|
||||
import androidx.compose.ui.unit.dp
|
||||
@ -50,6 +53,7 @@ import com.pitchedapps.frost.facebook.tab
|
||||
import com.pitchedapps.frost.tabselector.TabData
|
||||
import kotlinx.coroutines.launch
|
||||
|
||||
@OptIn(ExperimentalMaterial3Api::class)
|
||||
@Composable
|
||||
fun MainScreenContainer(
|
||||
modifier: Modifier = Modifier,
|
||||
@ -59,15 +63,17 @@ fun MainScreenContainer(
|
||||
navItems: List<TabData>,
|
||||
navSelectedIndex: Int,
|
||||
navOnSelect: (Int) -> Unit,
|
||||
content: @Composable (PaddingValues) -> Unit,
|
||||
content: @Composable (PaddingValues, NestedScrollConnection) -> Unit,
|
||||
) {
|
||||
|
||||
val drawerState = rememberDrawerState(DrawerValue.Closed)
|
||||
val scope = rememberCoroutineScope()
|
||||
val scrollBehavior = TopAppBarDefaults.enterAlwaysScrollBehavior()
|
||||
|
||||
ModalNavigationDrawer(
|
||||
modifier = modifier,
|
||||
drawerState = drawerState,
|
||||
gesturesEnabled = false,
|
||||
drawerContent = {
|
||||
MainModalDrawerContent(
|
||||
items = drawerItems,
|
||||
@ -85,7 +91,7 @@ fun MainScreenContainer(
|
||||
) {
|
||||
Scaffold(
|
||||
containerColor = Color.Transparent,
|
||||
topBar = { MainTopBar() },
|
||||
topBar = { MainTopBar(scrollBehavior = scrollBehavior) },
|
||||
bottomBar = {
|
||||
MainBottomBar(
|
||||
selectedIndex = navSelectedIndex,
|
||||
@ -93,7 +99,7 @@ fun MainScreenContainer(
|
||||
onSelect = { navOnSelect(it) },
|
||||
)
|
||||
},
|
||||
content = content,
|
||||
content = { paddingValues -> content(paddingValues, scrollBehavior.nestedScrollConnection) },
|
||||
)
|
||||
}
|
||||
}
|
||||
@ -129,12 +135,15 @@ private fun MainModalDrawerContent(
|
||||
|
||||
@OptIn(ExperimentalMaterial3Api::class)
|
||||
@Composable
|
||||
fun MainTopBar(modifier: Modifier = Modifier) {
|
||||
TopAppBar(modifier = modifier, title = { Text(text = "Title") })
|
||||
private fun MainTopBar(
|
||||
modifier: Modifier = Modifier,
|
||||
scrollBehavior: TopAppBarScrollBehavior? = null
|
||||
) {
|
||||
TopAppBar(modifier = modifier, scrollBehavior = scrollBehavior, title = { Text(text = "Title") })
|
||||
}
|
||||
|
||||
@Composable
|
||||
fun MainBottomBar(
|
||||
private fun MainBottomBar(
|
||||
modifier: Modifier = Modifier,
|
||||
selectedIndex: Int,
|
||||
items: List<TabData>,
|
||||
@ -161,7 +170,7 @@ fun MainBottomBar(
|
||||
|
||||
@Composable
|
||||
@Preview
|
||||
fun MainScreenContainerPreview() {
|
||||
private fun MainScreenContainerPreview() {
|
||||
val context = LocalContext.current
|
||||
|
||||
val drawerItems = remember { FbItem.values().map { it.tab(context) } }
|
||||
@ -180,6 +189,7 @@ fun MainScreenContainerPreview() {
|
||||
navItems = navItems,
|
||||
navSelectedIndex = navSelectedIndex,
|
||||
navOnSelect = { navSelectedIndex = it },
|
||||
) {}
|
||||
) { _, _ ->
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -34,6 +34,7 @@ import androidx.compose.runtime.rememberCoroutineScope
|
||||
import androidx.compose.runtime.setValue
|
||||
import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.input.nestedscroll.nestedScroll
|
||||
import androidx.lifecycle.viewmodel.compose.viewModel
|
||||
import com.pitchedapps.frost.compose.webview.FrostWebCompose
|
||||
import com.pitchedapps.frost.ext.WebTargetId
|
||||
@ -59,9 +60,9 @@ fun MainScreenWebView(modifier: Modifier = Modifier) {
|
||||
navItems = homeTabs.map { it.toTab() },
|
||||
navSelectedIndex = selectedHomeTab?.let { id -> homeTabs.indexOfFirst { it.id == id } } ?: -1,
|
||||
navOnSelect = { vm.useCases.homeTabs.selectHomeTab((homeTabs[it].id)) },
|
||||
) { paddingValues ->
|
||||
) { paddingValues, nestedScrollConnection ->
|
||||
MainScreenWebContainer(
|
||||
modifier = Modifier.padding(paddingValues),
|
||||
modifier = Modifier.padding(paddingValues).nestedScroll(nestedScrollConnection),
|
||||
selectedTab = selectedHomeTab,
|
||||
items = homeTabs,
|
||||
store = vm.store,
|
||||
|
Loading…
Reference in New Issue
Block a user