Use remember var delegates in more places

This commit is contained in:
arkon
2022-10-29 16:14:44 -04:00
parent f9c25b350e
commit 0849111247
9 changed files with 56 additions and 36 deletions

View File

@@ -28,18 +28,18 @@ fun EditTextPreferenceWidget(
value: String,
onConfirm: suspend (String) -> Boolean,
) {
val (isDialogShown, showDialog) = remember { mutableStateOf(false) }
var isDialogShown by remember { mutableStateOf(false) }
TextPreferenceWidget(
title = title,
subtitle = subtitle?.format(value),
icon = icon,
onPreferenceClick = { showDialog(true) },
onPreferenceClick = { isDialogShown = true },
)
if (isDialogShown) {
val scope = rememberCoroutineScope()
val onDismissRequest = { showDialog(false) }
val onDismissRequest = { isDialogShown = false }
var textFieldValue by rememberSaveable(stateSaver = TextFieldValue.Saver) {
mutableStateOf(TextFieldValue(value))
}

View File

@@ -12,8 +12,10 @@ import androidx.compose.material3.RadioButton
import androidx.compose.material3.Text
import androidx.compose.material3.TextButton
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip
@@ -36,18 +38,18 @@ fun <T> ListPreferenceWidget(
entries: Map<out T, String>,
onValueChange: (T) -> Unit,
) {
val (isDialogShown, showDialog) = remember { mutableStateOf(false) }
var isDialogShown by remember { mutableStateOf(false) }
TextPreferenceWidget(
title = title,
subtitle = subtitle,
icon = icon,
onPreferenceClick = { showDialog(true) },
onPreferenceClick = { isDialogShown = true },
)
if (isDialogShown) {
AlertDialog(
onDismissRequest = { showDialog(false) },
onDismissRequest = { isDialogShown = false },
title = { Text(text = title) },
text = {
Box {
@@ -61,7 +63,7 @@ fun <T> ListPreferenceWidget(
isSelected = isSelected,
onSelected = {
onValueChange(current.key!!)
showDialog(false)
isDialogShown = false
},
)
}
@@ -72,7 +74,7 @@ fun <T> ListPreferenceWidget(
}
},
confirmButton = {
TextButton(onClick = { showDialog(false) }) {
TextButton(onClick = { isDialogShown = false }) {
Text(text = stringResource(R.string.action_cancel))
}
},

View File

@@ -11,8 +11,10 @@ import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text
import androidx.compose.material3.TextButton
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.runtime.toMutableStateList
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
@@ -30,13 +32,13 @@ fun MultiSelectListPreferenceWidget(
values: Set<String>,
onValuesChange: (Set<String>) -> Unit,
) {
val (isDialogShown, showDialog) = remember { mutableStateOf(false) }
var isDialogShown by remember { mutableStateOf(false) }
TextPreferenceWidget(
title = preference.title,
subtitle = preference.subtitleProvider(values, preference.entries),
icon = preference.icon,
onPreferenceClick = { showDialog(true) },
onPreferenceClick = { isDialogShown = true },
)
if (isDialogShown) {
@@ -46,7 +48,7 @@ fun MultiSelectListPreferenceWidget(
.toMutableStateList()
}
AlertDialog(
onDismissRequest = { showDialog(false) },
onDismissRequest = { isDialogShown = false },
title = { Text(text = preference.title) },
text = {
LazyColumn {
@@ -91,14 +93,14 @@ fun MultiSelectListPreferenceWidget(
TextButton(
onClick = {
onValuesChange(selected.toMutableSet())
showDialog(false)
isDialogShown = false
},
) {
Text(text = stringResource(android.R.string.ok))
}
},
dismissButton = {
TextButton(onClick = { showDialog(false) }) {
TextButton(onClick = { isDialogShown = false }) {
Text(text = stringResource(R.string.action_cancel))
}
},