feat: 删除单个待办

This commit is contained in:
Super12138 2025-01-15 09:17:10 +08:00
parent cfe6228e99
commit 1656063449
7 changed files with 38 additions and 9 deletions

View file

@ -14,7 +14,11 @@ object Repository {
fun getAllTodos(): Flow<List<TodoEntity>> = toDoDao.getAll()
suspend fun updateTodo(toDo: TodoEntity){
suspend fun updateTodo(toDo: TodoEntity) {
toDoDao.update(toDo)
}
suspend fun deleteTodo(toDo: TodoEntity) {
toDoDao.delete(toDo.id)
}
}

View file

@ -17,4 +17,7 @@ interface TodoDao {
@Update
suspend fun update(toDo: TodoEntity)
@Query("DELETE FROM todo WHERE id = :toDoId")
suspend fun delete(toDoId: Int)
}

View file

@ -158,15 +158,7 @@ fun MainPage(viewModel: MainViewModel, modifier: Modifier = Modifier) {
},
toDo = selectedEditTodoItem,
onSave = { toDo ->
viewModel.setEditTodoItem(null)
viewModel.addTodo(toDo)
scope
.launch { bottomSheetState.hide() }
.invokeOnCompletion {
if (!bottomSheetState.isVisible) {
openBottomSheet = false
}
}
},
onClose = {
viewModel.setEditTodoItem(null)
@ -177,6 +169,9 @@ fun MainPage(viewModel: MainViewModel, modifier: Modifier = Modifier) {
openBottomSheet = false
}
}
},
onDelete = {
if (selectedEditTodoItem !== null) viewModel.deleteTodo(selectedEditTodoItem)
}
)
}

View file

@ -10,6 +10,7 @@ import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.verticalScroll
import androidx.compose.material3.ButtonColors
import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.FilledTonalButton
import androidx.compose.material3.MaterialTheme
@ -44,6 +45,7 @@ fun TodoBottomSheet(
toDo: TodoEntity? = null,
onSave: (TodoEntity) -> Unit,
onClose: () -> Unit,
onDelete: () -> Unit,
modifier: Modifier = Modifier
) {
val context = LocalContext.current
@ -104,6 +106,22 @@ fun TodoBottomSheet(
OutlinedButton(onClick = onClose) {
Text(stringResource(R.string.action_cancel))
}
if (toDo !== null) {
FilledTonalButton(
onClick = {
onDelete()
onClose()
},
colors = ButtonColors(
containerColor = MaterialTheme.colorScheme.errorContainer,
contentColor = MaterialTheme.colorScheme.onErrorContainer,
disabledContainerColor = MaterialTheme.colorScheme.onSurface,
disabledContentColor = MaterialTheme.colorScheme.onSurfaceVariant
)
) {
Text(stringResource(R.string.action_delete))
}
}
FilledTonalButton(
onClick = {
// 文本为空
@ -121,6 +139,7 @@ fun TodoBottomSheet(
id = toDo?.id ?: 0
)
)
onClose()
}
) {
Text(stringResource(R.string.action_save))

View file

@ -35,4 +35,10 @@ class MainViewModel : ViewModel() {
fun setEditTodoItem(toDo: TodoEntity?) {
selectedEditTodoItem = toDo
}
fun deleteTodo(toDo: TodoEntity) {
viewModelScope.launch {
Repository.deleteTodo(toDo)
}
}
}

View file

@ -25,4 +25,5 @@
<string name="page_crash">应用程序出现错误</string>
<string name="tip_no_crash_logs">没有日志传入</string>
<string name="action_exit_app">退出应用</string>
<string name="action_delete">删除</string>
</resources>

View file

@ -24,4 +24,5 @@
<string name="page_crash">Oops! App went wrong</string>
<string name="tip_no_crash_logs">No crash logs</string>
<string name="action_exit_app">Exit app</string>
<string name="action_delete">Delete</string>
</resources>