Trejkaz
09/09/2024, 2:21 PMTrejkaz
09/09/2024, 2:25 PM// Works
var nodeOffset by remember { mutableStateOf(DpOffset(200.dp, 300.dp)) }
DraggableCard(initialOffset = nodeOffset, onOffsetChange = { nodeOffset = it }) {
Row(horizontalArrangement = Arrangement.spacedBy(8.dp)) {
Text(text = "This One")
Pin(direction = <http://Direction.IN|Direction.IN>)
}
}
// Doesn't work
class NodeKey
val key = NodeKey()
val nodeOffsets = remember { mutableStateMapOf<NodeKey, DpOffset>() }
DraggableCard(initialOffset = nodeOffsets[key] ?: DpOffset(300.dp, 200.dp), onOffsetChange = { nodeOffsets[key] = it }) {
Row(horizontalArrangement = Arrangement.spacedBy(8.dp)) {
Text(text = "That One")
Pin(direction = Direction.OUT)
}
}
Trejkaz
09/09/2024, 2:28 PMAlbert Chang
09/09/2024, 2:39 PMTrejkaz
09/09/2024, 2:39 PMTrejkaz
09/09/2024, 2:39 PMTrejkaz
09/09/2024, 2:39 PMAlbert Chang
09/09/2024, 2:40 PMTrejkaz
09/09/2024, 2:40 PMTrejkaz
09/09/2024, 2:40 PMTrejkaz
09/09/2024, 3:13 PM@Composable
@Preview
fun DraggableCardPreview() {
MaterialTheme(colors = darkColors()) {
Surface(modifier = Modifier.fillMaxSize()) {
Graph {
val graphNodes = listOf(
GraphNodeState(initialData = GeneratorNode(), initialOffset = DpOffset(200.dp, 300.dp)),
GraphNodeState(initialData = ConsumerNode(), initialOffset = DpOffset(300.dp, 200.dp)),
)
nodes(nodes = graphNodes) { data ->
when (data) {
is GeneratorNode -> {
Row(horizontalArrangement = Arrangement.spacedBy(8.dp)) {
Text(text = "Generator Node")
Pin(direction = Direction.OUT)
}
}
is ConsumerNode -> {
Row(horizontalArrangement = Arrangement.spacedBy(8.dp)) {
Text(text = "Consumer Node")
Pin(direction = <http://Direction.IN|Direction.IN>)
}
}
}
}
}
}
}
}
Trejkaz
09/09/2024, 3:13 PMTrejkaz
09/09/2024, 3:38 PM