- minHeight).toFloat() private var _offset: Float by mutableStateOf(offset.coerceIn(0f, maxOffset)) private var _collapseFraction: Float by mutableStateOf(calcCollapseFraction()) // how much the toolbar extends from its collapsed state val offset: Float get() = _offset // fraction of collapse progress, 1 -> fully collapsed, 0 -> fully expanded val collapseFraction: Float get() = _collapseFraction var navigationIconWidth by mutableStateOf(0) var actionsWidth by mutableStateOf(0) fun consumeScrollOffset(available: Offset): Offset { ... } } 45
constraints -> // cause a lot of recomposition!! val maxWidth = if (toolbarState.offset < toolbarState.minHeight) { constraints.maxWidth - toolbarState.navigationIconWidth - toolbarState.actionsWidth } else { constraints.maxWidth } ... } } 56