更新使用者介面
本教程使用 IntelliJ IDEA,但您也可以在 Android Studio 中進行操作 – 這兩個 IDE 都共享相同的核心功能和 Kotlin Multiplatform 支援。
這是使用共享邏輯和原生 UI 建立 Kotlin Multiplatform 應用程式教程的第二部分。在繼續之前,請確保您已完成先前的步驟。
為了建立使用者介面,您將使用 Compose Multiplatform 工具包來構建專案的 Android 部分,並使用 SwiftUI 來構建 iOS 部分。 這兩者都是宣告式 UI 框架,您會在 UI 實作中看到相似之處。在這兩種情況下,您都會將資料儲存在 phrases
變數中,然後對其進行迭代以產生 Text
項目的清單。
更新 Android 部分
composeApp
模組包含一個 Android 應用程式,定義其主要活動和 UI 視圖,並將 shared
模組作為常規 Android 程式庫使用。該應用程式的 UI 使用 Compose Multiplatform 框架。
進行一些變更,看看它們如何反映在 UI 中:
導覽至
composeApp/src/androidMain/kotlin
中的App.kt
檔案。找到
Greeting
類別的呼叫。選取greet()
函式,右鍵點擊它,然後選取 Go To | Declaration or Usages。 您會看到它是您在上一步編輯的shared
模組中的相同類別。在
Greeting.kt
檔案中,更新greet()
函式:kotlinimport kotlin.random.Random fun greet(): List<String> = buildList { add(if (Random.nextBoolean()) "Hi!" else "Hello!") add("Guess what this is! > ${platform.name.reversed()}!") }
現在它會回傳一個字串清單。
返回
App.kt
檔案並更新App()
實作:kotlin@Composable @Preview fun App() { MaterialTheme { val greeting = remember { Greeting().greet() } Column( modifier = Modifier .padding(all = 10.dp) .safeContentPadding() .fillMaxSize(), verticalArrangement = Arrangement.spacedBy(8.dp), ) { greeting.forEach { greeting -> Text(greeting) HorizontalDivider() } } } }
在這裡,
Column
可組合項顯示每個Text
項目,在它們周圍新增邊距並在它們之間新增空間。遵循 IntelliJ IDEA 的建議匯入缺少的依賴項。
現在您可以執行 Android 應用程式,查看它如何顯示字串清單:
使用 iOS 模組
iosApp
目錄構建為一個 iOS 應用程式。它依賴並使用 shared
模組作為 iOS 框架。應用程式的 UI 以 Swift 編寫。
實作與 Android 應用程式相同的變更:
在 IntelliJ IDEA 中,在 Project 工具視窗的專案根目錄中找到
iosApp
資料夾。開啟
ContentView.swift
檔案,右鍵點擊Greeting().greet()
呼叫,然後選取 Go To | Definition。您會看到
shared
模組中定義的 Kotlin 函式的 Objective-C 宣告。從 Objective-C/Swift 使用 Kotlin 型別時,它們會表示為 Objective-C 型別。在這裡,greet()
函式在 Kotlin 中回傳List<String>
,從 Swift 看來則回傳NSArray<NSString>
。有關型別映射的更多資訊,請參閱與 Swift/Objective-C 的互通性。更新 SwiftUI 程式碼,以與 Android 應用程式相同的方式顯示項目清單:
Swiftstruct ContentView: View { let phrases = Greeting().greet() var body: some View { List(phrases, id: \.self) { Text($0) } } }
greet()
呼叫的結果儲存在phrases
變數中(Swift 中的let
類似於 Kotlin 的val
)。List
函式產生Text
項目的清單。
啟動 iOS 執行配置以查看變更:
可能的問題與解決方案
Xcode 報告呼叫共享框架的程式碼中存在錯誤
如果您正在使用 Xcode,您的 Xcode 專案可能仍在使用舊版本的框架。若要解決此問題,請返回 IntelliJ IDEA 並重建專案或啟動 iOS 執行配置。
Xcode 在匯入共享框架時報告錯誤
如果您正在使用 Xcode,它可能需要清除快取二進位檔:嘗試在主選單中選擇 Product | Clean Build Folder 來重設環境。
下一步
在教程的下一部分中,您將了解依賴項並新增第三方程式庫以擴展專案的功能。
取得協助
- Kotlin Slack。取得邀請並加入 #multiplatform 頻道。
- Kotlin 問題追蹤器。報告新問題。