Not sure if this has changed since the original post, but the behavior I see now is that Key is ignored and Value is what gets displayed. And if you're trying to set Default, then it needs to match Value. Making Key nearly useless.
Context:
I have an app with a lot of pairs of radio buttons, but on some devices the labels are too long, so I shrink them. To do this I have two separate Tables:
If(GLIsInApp,
Table({Key: "Pass", Value: "P"},{Key: "Fail", Value: "F"}),
Table({Key: "Pass", Value: "Pass"},{Key: "Fail", Value: "Fail"})
)
Value is what the Radio will display.
When I save a record, I save the Key.
Then when I'm setting the default (e.g. to view or edit):
Switch(ThisItem.TodayValue,
"Pass", If(GLIsInApp, "P", "Pass"),
"Fail", If(GLIsInApp, "F", "Fail"),
Blank()
)
I'm lucky, I only have two radio buttons. But this is a pain. It's different from how most other controls work, where they can be associated with a record and then choose which property to display, or define search vs display fields.
Unless I'm doing this completely wrong - which is plausible.