fix: 编辑待办时旋转屏幕无法修改原待办
This commit is contained in:
parent
0e54c94572
commit
6553c4afd9
2 changed files with 15 additions and 7 deletions
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -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
|
||||
}
|
||||
}
|
||||
Loading…
Reference in a new issue