Не работает скролл наверх в BottomSheetDialogFragment + Compose

Я пытаюсь побороть такое поведение BottomSheetDialogFragment:

  1. Открываю боттомшит со скроллабельным содержимым
  2. Скроллю вниз
  3. Когда я пытаюсь проскроллить снова наверх, вместо скролла наверх боттомшит закрывается

А мне нужно другое поведение - при свайпе наверх должен идти скролл, а уже после того как скроллить будет больше нечего, чтобы закрывался боттомшит. Возможно, тут поможешь что-то типа nested scroll, но не совсем понимаю, как тут подружить компоуз с нативным скроллом BottomSheetDialogFragment

Видео с багом: https://youtube.com/shorts/SO1JafvvgMw?feature=share

Код:

@Composable
fun PrivilegeBottomSheetContent() {

    val scrollState = rememberScrollState()

    Column(
        modifier = Modifier
            .verticalScroll(scrollState)
    ) {
        // Elements
    }
}

Bottom sheet:

class PrivilegeBottomSheetDialog : BottomSheetDialogFragment() {

    override fun onCreateView(
        inflater: LayoutInflater,
        container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View = ComposeView(requireContext()).apply {
        setViewCompositionStrategy(ViewCompositionStrategy.DisposeOnViewTreeLifecycleDestroyed)
        setContent {
            PrivilegeBottomSheetContent()
        }
    }
}

Ответы (1 шт):

Автор решения: faritowich

Провозился с багом какое-то время, пока не додумался пролистать гугловую документацию в скроллу в компоузе

Получилось как-то так:

@Composable
fun PrivilegeBottomSheetContent() {

    val nestedScrollInterop = rememberNestedScrollInteropConnection()
    Column(
        modifier = Modifier
            .nestedScroll(nestedScrollInterop)
    ) {
        // Elements
    }
}

А в кастомном BottomSheetDialogFragment использую XML-ный лейаут с ComposeView и NestedScrollView:

<?xml version="1.0" encoding="utf-8"?>
<androidx.core.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <androidx.compose.ui.platform.ComposeView
        android:id="@+id/composeView"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</androidx.core.widget.NestedScrollView>
→ Ссылка