🔥

compose multiplatformで各OSごとに違うUIを実装したい

2023/12/27に公開

やりたいこと

各プラットフォームでUIを微妙に変えたい。
今回の自分の場合は、デスクトップではダイアログを表示したくなかった。

思い返すとチュートリアルで、それぞれのプラットフォーム名を表示した気がしたので
コードを見に行った。

手順

  1. 共通処理のなかで、各プラットフォーム名を取得する
  2. 各プラットフォームごとに処理を変える

プラットフォーム名の取得

共通フォルダの中にある App.kt内に

expect fun getPlatformName():String

を追加

各プラットフォームのApp.ktファイル(App.android.kt, App.ios.kt, App.js.kt, App.jvm.kt)に以下を追加

actual fun getPlatformName():String {
    return "<それぞれのプラットフォーム名>"
}

これにより共通コード側からgetPlatformName()を呼ぶと、それぞれのプラットフォームの名前が返ってくる

公式ドキュメント

各プラットフォームごとに処理を変える

まぁここは割愛します。
if分とかswitch文とか適当に使ってください。

Discussion