fix(settings): RadioControlDialog 组合期间写状态
问题:Compose 运行时警告两次 'State write during composition' (split mode 重置 + baud rate 调整)。 根因:splitMode/baudRate 的条件写操作在组合 body 内直接执行 (if 块)。 修复:用 LaunchedEffect 隔离副作用,避免组合期间修改状态。 影响:消除运行时警告,避免潜在的组合跳帧或死循环。
This commit is contained in:
1 parent
20e5b2f617
commit
82c8112575
1 file changed
+7
-2
+7
-2
@@ -36,6 +36,7 @@ import androidx.compose.material3.OutlinedTextField
|
||||
import androidx.compose.material3.Switch
|
||||
import androidx.compose.material3.Text
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.LaunchedEffect
|
||||
import androidx.compose.runtime.mutableIntStateOf
|
||||
import androidx.compose.runtime.mutableStateOf
|
||||
import androidx.compose.runtime.remember
|
||||
@@ -519,13 +520,17 @@ fun RadioControlDialog(
|
||||
val isSingleRadio = isIcom && splitMode.value
|
||||
|
||||
// Reset split mode when switching away from IC-705
|
||||
if (!isIcom && splitMode.value) splitMode.value = false
|
||||
LaunchedEffect(isIcom) {
|
||||
if (!isIcom && splitMode.value) splitMode.value = false
|
||||
}
|
||||
|
||||
val baudRates = if (isIcom) RadioControlSettings.BAUD_RATES_ICOM
|
||||
else RadioControlSettings.BAUD_RATES_YAESU
|
||||
|
||||
// If current baud rate is not in the new list, default to the first available
|
||||
if (baudRate.intValue !in baudRates) baudRate.intValue = baudRates.first()
|
||||
LaunchedEffect(baudRates) {
|
||||
if (baudRate.intValue !in baudRates) baudRate.intValue = baudRates.first()
|
||||
}
|
||||
|
||||
val pairedDevices: List<Pair<String, String>> = remember {
|
||||
buildList {
|
||||
|
||||
Reference in new issue
Block a user