Код: Выделить всё
@OptIn(ExperimentalMaterial3Api::class)
@Composable
fun MineView(authViewModel: AuthViewModel = viewModel()) {
val drawerState = rememberDrawerState(initialValue = DrawerValue.Closed)
val scope = rememberCoroutineScope()
val navController = LocalNavigation.current
Scaffold(
topBar = {
TopAppBar(
colors = TopAppBarDefaults.topAppBarColors(
containerColor = MaterialTheme.colorScheme.primaryContainer
),
title = { Text(text = "我的") },
actions = {
IconButton(onClick = { scope.launch { drawerState.open() } }) {
Icon(
imageVector = Icons.Filled.Menu,
contentDescription = "菜单"
)
}
},
)
},
) { innerPadding ->
Column(
modifier = Modifier
.fillMaxSize()
.padding(innerPadding)
) {
Text(text = "Mine")
}
}
showBottomBar.value = !drawerState.isOpen
CompositionLocalProvider(LocalLayoutDirection provides LayoutDirection.Rtl) {
ModalNavigationDrawer(
drawerState = drawerState,
drawerContent = {
ModalDrawerSheet(modifier = Modifier.width(200.dp)) {
Column(
modifier = Modifier.fillMaxWidth(),
horizontalAlignment = Alignment.CenterHorizontally
) {
Spacer(modifier = Modifier.weight(1f))
// 将退出登录按钮放置在底部中间
Button(
onClick = {
authViewModel.logout()
scope.launch {
drawerState.close()
}
navController.navigate(RouterEnums.HOME.router)
},
modifier = Modifier.padding(bottom = 20.dp)
) {
Text(text = "退出登录")
}
}
}
},
) {}
}
}
Он вступит в силу после перемещения ModalNavigationDrawer в содержимое Scaffold, но ящик будет находиться под topBar.
Я не могу сделать ModalNavigationDrawer над topBar и в то же время заставить событие щелчка iconButton в topBar вступить в силу.
пожалуйста, помогите мне, спасибо.
Подробнее здесь: https://stackoverflow.com/questions/781 ... be-invalid