fix: 编辑待办时旋转屏幕无法修改原待办

This commit is contained in:
Super12138 2025-01-13 18:39:49 +08:00
parent 0e54c94572
commit 6553c4afd9
2 changed files with 15 additions and 7 deletions

View file

@ -49,7 +49,7 @@ fun MainPage(viewModel: MainViewModel, modifier: Modifier = Modifier) {
}
}
var selectedTodoItem by remember { mutableStateOf<TodoEntity?>(null) }
val selectedEditTodoItem = viewModel.selectedEditTodoItem
var openBottomSheet by rememberSaveable { mutableStateOf(false) }
val bottomSheetState = rememberModalBottomSheetState(skipPartiallyExpanded = true)
val scope = rememberCoroutineScope()
@ -121,7 +121,7 @@ fun MainPage(viewModel: MainViewModel, modifier: Modifier = Modifier) {
list = toDoList.value.filter { item -> !item.isCompleted },
onItemClick = { item ->
openBottomSheet = true
selectedTodoItem = item
viewModel.setEditTodoItem(item)
},
onItemChecked = { item ->
item.apply {
@ -158,7 +158,7 @@ fun MainPage(viewModel: MainViewModel, modifier: Modifier = Modifier) {
list = toDoList.value.filter { item -> !item.isCompleted },
onItemClick = { item ->
openBottomSheet = true
selectedTodoItem = item
viewModel.setEditTodoItem(item)
},
onItemChecked = { item ->
item.apply {
@ -186,11 +186,11 @@ fun MainPage(viewModel: MainViewModel, modifier: Modifier = Modifier) {
sheetState = bottomSheetState,
onDismissRequest = {
openBottomSheet = false
selectedTodoItem = null
viewModel.setEditTodoItem(null)
},
toDo = selectedTodoItem,
toDo = selectedEditTodoItem,
onSave = { toDo ->
selectedTodoItem = null
viewModel.setEditTodoItem(null)
viewModel.addTodo(toDo)
scope
.launch { bottomSheetState.hide() }
@ -201,7 +201,7 @@ fun MainPage(viewModel: MainViewModel, modifier: Modifier = Modifier) {
}
},
onClose = {
selectedTodoItem = null
viewModel.setEditTodoItem(null)
scope
.launch { bottomSheetState.hide() }
.invokeOnCompletion {

View file

@ -1,6 +1,8 @@
package cn.super12138.todo.ui.viewmodels
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.setValue
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import cn.super12138.todo.logic.Repository
@ -10,6 +12,8 @@ import kotlinx.coroutines.launch
class MainViewModel : ViewModel() {
val toDos: Flow<List<TodoEntity>> = Repository.getAllTodos()
var selectedEditTodoItem by mutableStateOf<TodoEntity?>(null)
private set
val showConfetti = mutableStateOf(false)
fun addTodo(toDo: TodoEntity) {
@ -27,4 +31,8 @@ class MainViewModel : ViewModel() {
fun playConfetti() {
showConfetti.value = true
}
fun setEditTodoItem(toDo: TodoEntity?) {
selectedEditTodoItem = toDo
}
}