fix: 小屏幕中编辑器 FAB 会挡住内容
This commit is contained in:
parent
f6bb037323
commit
cbdb55df6a
3 changed files with 19 additions and 14 deletions
|
|
@ -11,10 +11,12 @@ import androidx.compose.animation.fadeOut
|
|||
import androidx.compose.animation.shrinkVertically
|
||||
import androidx.compose.foundation.layout.Arrangement
|
||||
import androidx.compose.foundation.layout.Row
|
||||
import androidx.compose.foundation.layout.Spacer
|
||||
import androidx.compose.foundation.layout.fillMaxSize
|
||||
import androidx.compose.foundation.layout.fillMaxWidth
|
||||
import androidx.compose.foundation.layout.imePadding
|
||||
import androidx.compose.foundation.layout.padding
|
||||
import androidx.compose.foundation.layout.size
|
||||
import androidx.compose.foundation.lazy.LazyColumn
|
||||
import androidx.compose.material.icons.Icons
|
||||
import androidx.compose.material.icons.automirrored.outlined.Undo
|
||||
|
|
@ -255,6 +257,10 @@ fun TodoEditorPage(
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
item {
|
||||
Spacer(modifier = Modifier.size(80.dp))
|
||||
}
|
||||
}
|
||||
|
||||
ConfirmDialog(
|
||||
|
|
|
|||
|
|
@ -58,22 +58,20 @@ fun MainPage(
|
|||
var showDeleteConfirmDialog by rememberSaveable { mutableStateOf(false) }
|
||||
|
||||
val selectedTodoIds by remember { derivedStateOf { selectedTodos.value } }
|
||||
val isSelectedIdsEmpty by remember { derivedStateOf { selectedTodoIds.isEmpty() } }
|
||||
val inSelectedMode by remember { derivedStateOf { !selectedTodoIds.isEmpty() } }
|
||||
val toDoList by remember { derivedStateOf { toDos.value } }
|
||||
val totalTasks by remember { derivedStateOf { toDoList.size } }
|
||||
val completedTasks by remember { derivedStateOf { toDoList.count { it.isCompleted } } }
|
||||
val filteredTodoList = if (showCompleted) toDoList else toDoList.filter { item -> !item.isCompleted }
|
||||
val filteredTodoList = if (showCompleted) toDoList else toDoList.filter { item -> !item.isCompleted }
|
||||
|
||||
BackHandler(enabled = !isSelectedIdsEmpty) {
|
||||
// 当按下返回键(或进行返回操作)时清空选择
|
||||
viewModel.clearAllTodoSelection()
|
||||
}
|
||||
// 当按下返回键(或进行返回操作)时清空选择,仅在非选择模式下生效
|
||||
BackHandler(inSelectedMode) { viewModel.clearAllTodoSelection() }
|
||||
|
||||
Scaffold(
|
||||
topBar = {
|
||||
TodoTopAppBar(
|
||||
selectedTodoIds = selectedTodoIds,
|
||||
selectedMode = !isSelectedIdsEmpty,
|
||||
selectedMode = inSelectedMode,
|
||||
onCancelSelect = { viewModel.clearAllTodoSelection() },
|
||||
onSelectAll = { viewModel.selectAllTodos() },
|
||||
onDeleteSelectedTodo = { showDeleteConfirmDialog = true },
|
||||
|
|
@ -83,7 +81,7 @@ fun MainPage(
|
|||
floatingActionButton = {
|
||||
with(sharedTransitionScope) {
|
||||
AnimatedVisibility(
|
||||
visible = isSelectedIdsEmpty,
|
||||
visible = inSelectedMode,
|
||||
enter = fadeIn() + expandIn(),
|
||||
exit = shrinkOut() + fadeOut()
|
||||
) {
|
||||
|
|
@ -120,11 +118,11 @@ fun MainPage(
|
|||
state = listState,
|
||||
list = filteredTodoList,
|
||||
onItemClick = { item ->
|
||||
if (isSelectedIdsEmpty) {
|
||||
if (inSelectedMode) {
|
||||
viewModel.toggleTodoSelection(item)
|
||||
} else {
|
||||
viewModel.setEditTodoItem(item)
|
||||
toTodoEditPage()
|
||||
} else {
|
||||
viewModel.toggleTodoSelection(item)
|
||||
}
|
||||
},
|
||||
onItemLongClick = { viewModel.toggleTodoSelection(it) },
|
||||
|
|
@ -163,11 +161,11 @@ fun MainPage(
|
|||
state = listState,
|
||||
list = filteredTodoList,
|
||||
onItemClick = { item ->
|
||||
if (isSelectedIdsEmpty) {
|
||||
if (inSelectedMode) {
|
||||
viewModel.toggleTodoSelection(item)
|
||||
} else {
|
||||
viewModel.setEditTodoItem(item)
|
||||
toTodoEditPage()
|
||||
} else {
|
||||
viewModel.toggleTodoSelection(item)
|
||||
}
|
||||
},
|
||||
onItemLongClick = { viewModel.toggleTodoSelection(it) },
|
||||
|
|
|
|||
|
|
@ -47,6 +47,7 @@ fun SettingsDataCategory(
|
|||
modifier: Modifier = Modifier
|
||||
) {
|
||||
// TODO: 本页及其相关组件重组性能检查优化
|
||||
// TODO: 优化内部项目样式
|
||||
val scrollBehavior = TopAppBarDefaults.exitUntilCollapsedScrollBehavior()
|
||||
val snackbarHostState = remember { SnackbarHostState() }
|
||||
val scope = rememberCoroutineScope()
|
||||
|
|
|
|||
Loading…
Reference in a new issue