Today the facade ships only the base filled Button and base IconButton. The full Material 3 button family has six fill styles each, plus toggle variants for icon buttons, and none of the rest are wrapped. Most apps need at least OutlinedButton and TextButton to build a normal dialog/form.
Missing composables
| Composable |
Kt class |
OutlinedButton |
ButtonKt |
TextButton |
ButtonKt |
ElevatedButton |
ButtonKt |
FilledTonalButton |
ButtonKt |
FilledIconButton |
IconButtonKt |
FilledTonalIconButton |
IconButtonKt |
OutlinedIconButton |
IconButtonKt |
IconToggleButton |
IconButtonKt |
FilledIconToggleButton |
IconButtonKt |
FilledTonalIconToggleButton |
IconButtonKt |
OutlinedIconToggleButton |
IconButtonKt |
Approach
Same shape as the existing Button and IconButton:
- Check whether the generated binding exposes the method — if so, call it directly (preferred). Most non-Color/Dp-only overloads should survive the binder.
- For stripped overloads (any signature with
Color/Dp/TextUnit inline-class params, hash-mangled *-(...)): add a [ComposeBridge] partial in ComposeBridges.cs + [ComposeDefaults] in ComposeDefaults.cs.
- One
.cs file per type in src/ComposeNet.Compose/ (e.g. OutlinedButton.cs), deriving from ComposableContainer.
- Toggle variants take a
MutableState<bool> (or a bool checked + Action<bool> onCheckedChange) — mirror the existing Checkbox / Switch shape.
Sample
Drop one of each into the sample's existing button section so we can visually confirm the five button fill styles render correctly under MaterialTheme.
Tracking
Long-term, dotnet/java-interop#1440 will let us delete the bridges and call the generated bindings directly.
Today the facade ships only the base filled
Buttonand baseIconButton. The full Material 3 button family has six fill styles each, plus toggle variants for icon buttons, and none of the rest are wrapped. Most apps need at leastOutlinedButtonandTextButtonto build a normal dialog/form.Missing composables
OutlinedButtonButtonKtTextButtonButtonKtElevatedButtonButtonKtFilledTonalButtonButtonKtFilledIconButtonIconButtonKtFilledTonalIconButtonIconButtonKtOutlinedIconButtonIconButtonKtIconToggleButtonIconButtonKtFilledIconToggleButtonIconButtonKtFilledTonalIconToggleButtonIconButtonKtOutlinedIconToggleButtonIconButtonKtApproach
Same shape as the existing
ButtonandIconButton:Color/Dp/TextUnitinline-class params, hash-mangled*-(...)): add a[ComposeBridge]partial inComposeBridges.cs+[ComposeDefaults]inComposeDefaults.cs..csfile per type insrc/ComposeNet.Compose/(e.g.OutlinedButton.cs), deriving fromComposableContainer.MutableState<bool>(or abool checked+Action<bool> onCheckedChange) — mirror the existingCheckbox/Switchshape.Sample
Drop one of each into the sample's existing button section so we can visually confirm the five button fill styles render correctly under
MaterialTheme.Tracking
Long-term, dotnet/java-interop#1440 will let us delete the bridges and call the generated bindings directly.