From 58b8801c0cc64d21c481b3fb51212f5caeda9d83 Mon Sep 17 00:00:00 2001 From: atsunatsu Date: Tue, 11 Aug 2026 23:42:06 +0800 Subject: [PATCH] fix: preserve calculator frequencies while scrolling --- .../look4sat/feature/radar/TransceiversPage.kt | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/feature/radar/src/main/java/com/rtbishop/look4sat/feature/radar/TransceiversPage.kt b/feature/radar/src/main/java/com/rtbishop/look4sat/feature/radar/TransceiversPage.kt index bb2cf76d..4422ae16 100644 --- a/feature/radar/src/main/java/com/rtbishop/look4sat/feature/radar/TransceiversPage.kt +++ b/feature/radar/src/main/java/com/rtbishop/look4sat/feature/radar/TransceiversPage.kt @@ -67,6 +67,7 @@ import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableIntStateOf import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember +import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier @@ -191,7 +192,7 @@ fun CalculatorPage( } } - item { + item(key = "calculator_${selectedTransceiver.uuid}") { DopplerFrequencyCalculator( transponder = selectedTransceiver, orbitalPos = orbitalPos, @@ -556,10 +557,10 @@ private fun DopplerFrequencyCalculator( ) { if (orbitalPos == null || !DopplerFrequencyCalculator.isLinearTransponder(transponder)) return - var lastEditedField by remember { mutableStateOf(EditedField.TX) } - var txFrequencyHz by remember { mutableStateOf(0L) } - var rxFrequencyHz by remember { mutableStateOf(0L) } - var passbandPosition by remember { mutableStateOf(0.5f) } + var lastEditedField by rememberSaveable(transponder.uuid) { mutableStateOf(EditedField.TX) } + var txFrequencyHz by rememberSaveable(transponder.uuid) { mutableStateOf(0L) } + var rxFrequencyHz by rememberSaveable(transponder.uuid) { mutableStateOf(0L) } + var passbandPosition by rememberSaveable(transponder.uuid) { mutableStateOf(0.5f) } // 每个卫星独立记忆 offset:以 NORAD 编号为 key,存到应用 SharedPreferences val context = LocalContext.current val catnum = transponder.catnum