قبل أيام قليلة ، أعلنت JetBrains في مدونتها عن إطلاق أداة جديدة لإنشاء تطبيقات سطح المكتب Jetpack Compose Desktop . لا تفضل شركة ذات جذور روسية الجمهور الناطق بالروسية ولا تتعجل لإخبارنا عن المنتج الجديد ، لذلك سأقوم بدور الموزع.
ربما سمع مطورو Android بالفعل عن Compose ، المتوفر في إصدار المعاينة من Android Studio 4.2. لست من محبي تثبيت الإصدارات التجريبية ، لذلك لم أستطع الشعور بالتكنولوجيا الجديدة بيدي. لكن عندما سمعت الأخبار حول Compose Desktop ، لم أستطع المقاومة وأضع نفسي برنامج IntelliJ IDEA للوصول المبكر.
بادئ ذي بدء ، قمت بتثبيت إصدار IDEA 2020.3 ، والذي يحتوي بالفعل على جميع الإعدادات والقوالب اللازمة.
قم بإنشاء مشروع جديد وحدد سطح المكتب يستخدم قالب Kotlin 1.4.0 . يجب أن يكون الحد الأدنى لإصدار Java SDK هو 11. على الأقل قمت باختباره على نظام التشغيل Windows 10 ، وليس لدي أي أنظمة أساسية أخرى.

ستنشئ بيئة التطوير المشروع الأول وسيظهر الملف الرئيسي main.kt بهذا الشكل.
import androidx.compose.desktop.Window
import androidx.compose.material.Text
import androidx.compose.material.Button
import androidx.compose.material.MaterialTheme
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
fun main() = Window {
var text by remember { mutableStateOf("Hello, World!") }
MaterialTheme {
Button(onClick = {
text = "Hello, Desktop!"
}) {
Text(text)
}
}
}.

androidx -.
: , , .
import androidx.compose.desktop.Window
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.material.Text
import androidx.compose.material.Button
import androidx.compose.material.MaterialTheme
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.IntSize
import androidx.compose.ui.unit.dp
fun main() = Window(title = " ", size = IntSize(300, 250)) {
var count by remember { mutableStateOf(0) }
MaterialTheme {
Column(Modifier.fillMaxSize(), Arrangement.spacedBy(5.dp)) {
Button(modifier = Modifier.align(Alignment.CenterHorizontally), onClick = {
count++
}) {
Text(if (count == 0) "Hello Kitty" else " : $count!")
}
Button(modifier = Modifier.align(Alignment.CenterHorizontally),
onClick = {
count = 0
}) {
Text("")
}
}
}
}-.

, Android . . Android, Windows (Mac, Linux) . , -.