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

View file

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