🧃

KotlinのCompose Multiplatform(Desktop)でmaterial3を使う

2024/07/22に公開

Jetpack Composeのチュートリアルをやりたい

KotlinのMultiplatformが面白そうだったので、Win/Mac両方で動くアプリケーションを作成するためにIntelliJのCompose for Desktopテンプレートを使っていました。

UI関連を一通り触ってみたかったため、Jetpack Composeのチュートリアルを触ってみたのですが、このチュートリアルは androidx.compose.material3 が使われており、Compose for Desktopのテンプレートに含まれているのは androidx.compose.material の方で、初期状態で material3 は依存関係に含まれていません

ところが material3の依存関係の宣言 の通りそのまま追加しようとすると、これはAndroidにしか使えないようで、実行時エラーが発生します。

解決法

build.gradle.kts に以下の依存関係を追加します。

dependencies {
    implementation(compose.desktop.currentOs)
    implementation(compose.material3)  // <- これを追加
}

Kotlin Multiplatform DevelopmentドキュメントのCompatibillity and versionsのページにひっそりと書いてあります。

For example, if you apply the Compose Multiplatform 1.5.0 Gradle plugin and add implementation(compose.material3) to your dependencies

この方法で導入した場合、Androidをターゲットとする場合 androidx.compose.material3 が選択され、他のターゲットの場合org.jetbrains.compose.material3が選択されるようです。
従って org.jetbrains.compose.material3 を直接追加しても問題なさそうです。

kotlin multiplatform desktop material3 とかで検索しても全然出てこないので記事にしてみました。もうちょっと分かりやすいとこに書いて…(懇願)

Discussion