The standard refresh affordance for scrollable content (PullToRefreshBox from androidx.compose.material3.pulltorefresh) is not wrapped. Without it, lists in a compose-net app have no idiomatic refresh gesture.
Missing composables
| Composable |
Kt class |
PullToRefreshBox |
PullToRefreshKt |
PullToRefreshDefaults.Indicator |
PullToRefreshDefaults (object) |
State holder: rememberPullToRefreshState() → PullToRefreshState. Likely survives the binder (no inline-class params).
Approach
Probably a ComposableContainer shape — children go inside the scrollable content slot, plus a bool isRefreshing + Action onRefresh constructor.
The default indicator is rendered automatically; expose an optional Indicator slot property for the customization path (same pattern as AlertDialog's slot properties).
Tracking
Long-term dotnet/java-interop#1440.
The standard refresh affordance for scrollable content (
PullToRefreshBoxfromandroidx.compose.material3.pulltorefresh) is not wrapped. Without it, lists in a compose-net app have no idiomatic refresh gesture.Missing composables
PullToRefreshBoxPullToRefreshKtPullToRefreshDefaults.IndicatorPullToRefreshDefaults(object)State holder:
rememberPullToRefreshState()→PullToRefreshState. Likely survives the binder (no inline-class params).Approach
Probably a
ComposableContainershape — children go inside the scrollable content slot, plus abool isRefreshing+Action onRefreshconstructor.The default indicator is rendered automatically; expose an optional
Indicatorslot property for the customization path (same pattern asAlertDialog's slot properties).Tracking
Long-term dotnet/java-interop#1440.