Android / Kotlin / Programming

The offset was read before being initialized の対処法

BottomSheetScaffoldなどのBottomSheetを使うAPIはmaterialとmaterial3の両方に存在します。今回の問題は両方ともに発生している問題でGoogle Issue Trackerにも報告されています。
そこで紹介されている回避方法をまとめました。

エラー内容

The offset was read before being initialized. Did you access the offset in a phase before layout, like effects or composition?
訳: オフセットの読み取りが初期化前に行われました。レイアウトフェーズよりも前のフェーズでオフセットにアクセスしましたか?

解決方法に直接関係はありませんが、このフェーズはJetpack Composeのフェーズを指しています。

原因

私の場合はgradleのdependenciesを更新したことで起きました。

解決方法

material3の場合

build.gradle(:app)のmaterial3をこちらに書き換えれば解決します。

    implementation "androidx.compose.material3:material3:1.2.0-alpha07"

materialの場合

build.gradle(:app)のmaterialをこちらに書き換えれば解決します。

    implementation "androidx.compose.material:material:1.6.0-alpha05"

参考サイト

Google Issue Tracker Material3 BottomSheetScaffold crash when in NavHost since -alpha05
Compose マテリアル3
Google Issue Tracker ModalBottomSheetLayout crashes when rotating from halfExpanded in landscape to portrait without halfExpanded
Compose マテリアル

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です