課題
androidx.compose.material3:material3
を 1.2.0
にしたところ、TopAppBar
とPullRefresh
がうまく連動して動作しなくなった(TopAppBarDefaults.exitUntilCollapsedScrollBehavior
の場合に下にスクロールしてもTopAppBar
が降りてこない)。どうすればよいか。
対応
1.2.0
よりmaterial3にpulltorefresh
パッケージが追加された。その影響か挙動が変わってしまったようだ。
実装方法が色々とあると思うのでポイントのみ。nestedScrollConnection
を2つ使うことになるが、順番が影響する。pullToRefreshState.nestedScrollConnection
をscrollBehavior.nestedScrollConnection
よりも先に記述するのがポイント。
// TopAppBar向け val scrollBehavior = TopAppBarDefaults.exitUntilCollapsedScrollBehavior() // PullToRefresh向け val pullToRefreshState = rememberPullToRefreshState() Scaffold( modifier = Modifier .nestedScroll(pullToRefreshState.nestedScrollConnection) .nestedScroll(scrollBehavior.nestedScrollConnection) )
Scaffold
じゃなくても PullToRefresh
を囲んでいるBox
のModifierに書いても動作した。何かしら違いはあるかも。
感想
nestedScroll
をチェインして書けるの知らなかったし、順番も気にしたことなかったな。気づけて良かった。