From cbdb55df6a8634a46090bb9383ee12edde99a0e0 Mon Sep 17 00:00:00 2001 From: Super12138 <70494801+Super12138@users.noreply.github.com> Date: Tue, 8 Jul 2025 17:30:36 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=B0=8F=E5=B1=8F=E5=B9=95=E4=B8=AD?= =?UTF-8?q?=E7=BC=96=E8=BE=91=E5=99=A8=20FAB=20=E4=BC=9A=E6=8C=A1=E4=BD=8F?= =?UTF-8?q?=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../todo/ui/pages/editor/TodoEditorPage.kt | 6 +++++ .../super12138/todo/ui/pages/main/MainPage.kt | 26 +++++++++---------- .../ui/pages/settings/SettingsDataCategory.kt | 1 + 3 files changed, 19 insertions(+), 14 deletions(-) diff --git a/app/src/main/kotlin/cn/super12138/todo/ui/pages/editor/TodoEditorPage.kt b/app/src/main/kotlin/cn/super12138/todo/ui/pages/editor/TodoEditorPage.kt index 2cbbd4e..2ea70bf 100644 --- a/app/src/main/kotlin/cn/super12138/todo/ui/pages/editor/TodoEditorPage.kt +++ b/app/src/main/kotlin/cn/super12138/todo/ui/pages/editor/TodoEditorPage.kt @@ -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( diff --git a/app/src/main/kotlin/cn/super12138/todo/ui/pages/main/MainPage.kt b/app/src/main/kotlin/cn/super12138/todo/ui/pages/main/MainPage.kt index e5f3659..43e6a56 100644 --- a/app/src/main/kotlin/cn/super12138/todo/ui/pages/main/MainPage.kt +++ b/app/src/main/kotlin/cn/super12138/todo/ui/pages/main/MainPage.kt @@ -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) }, diff --git a/app/src/main/kotlin/cn/super12138/todo/ui/pages/settings/SettingsDataCategory.kt b/app/src/main/kotlin/cn/super12138/todo/ui/pages/settings/SettingsDataCategory.kt index fa2661d..8accccb 100644 --- a/app/src/main/kotlin/cn/super12138/todo/ui/pages/settings/SettingsDataCategory.kt +++ b/app/src/main/kotlin/cn/super12138/todo/ui/pages/settings/SettingsDataCategory.kt @@ -47,6 +47,7 @@ fun SettingsDataCategory( modifier: Modifier = Modifier ) { // TODO: 本页及其相关组件重组性能检查优化 + // TODO: 优化内部项目样式 val scrollBehavior = TopAppBarDefaults.exitUntilCollapsedScrollBehavior() val snackbarHostState = remember { SnackbarHostState() } val scope = rememberCoroutineScope()