ui(android): LazyColumn stable keys for in-place output picker row continuity
android / Build + lint + test (push) Failing after 1m21s
android / Build + lint + test (push) Failing after 1m21s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
+17
-6
@@ -4,8 +4,11 @@ import androidx.compose.foundation.layout.Arrangement
|
|||||||
import androidx.compose.foundation.layout.Column
|
import androidx.compose.foundation.layout.Column
|
||||||
import androidx.compose.foundation.layout.Row
|
import androidx.compose.foundation.layout.Row
|
||||||
import androidx.compose.foundation.layout.fillMaxWidth
|
import androidx.compose.foundation.layout.fillMaxWidth
|
||||||
|
import androidx.compose.foundation.layout.heightIn
|
||||||
import androidx.compose.foundation.layout.padding
|
import androidx.compose.foundation.layout.padding
|
||||||
import androidx.compose.foundation.layout.size
|
import androidx.compose.foundation.layout.size
|
||||||
|
import androidx.compose.foundation.lazy.LazyColumn
|
||||||
|
import androidx.compose.foundation.lazy.items
|
||||||
import androidx.compose.material3.ExperimentalMaterial3Api
|
import androidx.compose.material3.ExperimentalMaterial3Api
|
||||||
import androidx.compose.material3.Icon
|
import androidx.compose.material3.Icon
|
||||||
import androidx.compose.material3.MaterialTheme
|
import androidx.compose.material3.MaterialTheme
|
||||||
@@ -69,12 +72,19 @@ fun OutputPickerSheet(
|
|||||||
color = MaterialTheme.colorScheme.onSurface,
|
color = MaterialTheme.colorScheme.onSurface,
|
||||||
modifier = Modifier.padding(vertical = 8.dp),
|
modifier = Modifier.padding(vertical = 8.dp),
|
||||||
)
|
)
|
||||||
snapshot.available.forEach { route ->
|
LazyColumn(
|
||||||
RouteRow(
|
modifier = Modifier
|
||||||
route = route,
|
.fillMaxWidth()
|
||||||
isSelected = route.id == snapshot.current.id,
|
.heightIn(max = ROUTE_LIST_MAX_HEIGHT_DP.dp),
|
||||||
onClick = { onRouteSelected(route) },
|
verticalArrangement = Arrangement.spacedBy(4.dp),
|
||||||
)
|
) {
|
||||||
|
items(items = snapshot.available, key = { it.id }) { route ->
|
||||||
|
RouteRow(
|
||||||
|
route = route,
|
||||||
|
isSelected = route.id == snapshot.current.id,
|
||||||
|
onClick = { onRouteSelected(route) },
|
||||||
|
)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (permissionDenied) {
|
if (permissionDenied) {
|
||||||
PermissionHintRow()
|
PermissionHintRow()
|
||||||
@@ -198,3 +208,4 @@ private fun defaultSubtitle(route: OutputRoute): String = when (route.kind) {
|
|||||||
|
|
||||||
private const val ROW_ICON_DP = 24
|
private const val ROW_ICON_DP = 24
|
||||||
private const val HINT_ICON_DP = 20
|
private const val HINT_ICON_DP = 20
|
||||||
|
private const val ROUTE_LIST_MAX_HEIGHT_DP = 400
|
||||||
|
|||||||
Reference in New Issue
Block a user