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