Kotlin Multiplatform Broadcast
9.48K subscribers
835 photos
53 videos
1.13K links
Новости и фичи Kotlin, а также Kotlin Multiplatform

YouTubе канал: https://youtube.com/androidBroadcast
Compose Multiplatform @compose_broadcast
iOS разработка @ios_broadcast
Новости Android @android_broadcast
Реклама и прочее @android_broadcast_bot
Download Telegram
🏝 Избегайте использования Array типов в конструкторе data class потому что:
👉 equals() и hashCode() в Array не сравнивает содержимое массива
👉 Array - модифицируемый тип, могут изменить данные снаружи

Рекомендуется использовать List или ImmutableList

Источник тут (альтернативная ссылка)

#kotlin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍90
🏝 Вышел KSP 2.0.1 для Kotlin 2.1.20 Исправили баги в работе KSP2

#kotlin #ksp
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15
🏝 klibs.io активно развивается и за прошедший месяц количество библиотек за апрель 2025 увеличилось в 2 раза 🚀

#kotlin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍38
Forwarded from Compose Broadcast
⚙️ Вышел Compose Multiplatform 1.8.0

Что нового:
👉 Переход на K2
🏝 Поддерживается Kotlin 2.1.0 или выше
👉 Мультиплатформенные реализации BackHandler и PredictiveBackHandler
👉 Улучшения в тестах
👉 Поддержка вариативных шрифтов на всех платформах
👉 Clipboard API заменяет ClipboardManager для работы c буфером обмена на всех платформах
👉 Множество улучшений в Compose/iOS
👉 На Windows улучшили производительность и размер инсталятора
🤖 Поддержка Compose ресурсов в таргете androidLibrary

Множество других улучшений, которые надо разбирать отдельными постами.

#compose #k2
Please open Telegram to view this post
VIEW IN TELEGRAM
👍50
Forwarded from Compose Broadcast
🔥⚙️ Compose iOS теперь Stable

Самый громкий и важный анонс в истории Compose Multiplatform с выходом версии 1.8.0

Что именно готово для продакшен применения
👉 Все основные фичи из Jetpack Compose работают на iOS
👉 Типобезопасная навигация с поддержкой deep link
👉 Гибкое управление ресурсами
👉 Поддержка iOS Accessibility API
👉 Ощущения от UI приложения как нативного (скрол, редактирование текста, drag-and-drop, адаптивный UI, навигация жестами и пр)
👉 Производительность UI на Compose близка к SwiftUI, но пока немного уступает

Новая эра мобильной разработки уже тут!

#compose #ios
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍132
🚀 Библиотека Jetpack Saved State стала KMP с поддержкой Android, iOS, Linux, Mac и JVM. Решение поможет вас сохранять состояние при смерте процесса приложения для восстановления состояния

#jetpack #kotlin #kmp #android #ios #desktop
Please open Telegram to view this post
VIEW IN TELEGRAM
👍37
🏝 Статус Kotlin для Web

JetBrains рассказала про статус и будущее Kotlin Multiplatform для Web разработки. Сейчас в работе:
👉 Улучшении поддержки в IDE
👉 Достичь Beta статус для Kotlin/Wasm и Compose Multiplatform для Web
👉 Режим совместимости со старыми браузерами для Compose Multiplatform
👉 Избавиться от большинства ограничений интеропа в Kotlin/JS
👉 Поддержать современны стандарты JavaScript в Koltin/JS

#kotlin #web #wasm #js
Please open Telegram to view this post
VIEW IN TELEGRAM
👍49
JetBrains проводит опрос по документации Kotlin на оф сайте

#kotlin #опрос
👍9
🏝 Используйте build функции коллекций вместо наполнения объектами

Зачастую вижу код
val list: MutableList<Value> = mutableListOf()
list.add(value0)
if(...) list.add(value1)


Вместо этого рекомендую использовать buildList
val list: List<Value> = buildList {
add(value0)
if(...) add(value1)
}

Плюсом такого подхода - отсутствие работы с мутируемой коллекцией

Есть аналоги для других типов коллекций: buildSet и buildMap

#kotlin
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍172
Media is too big
VIEW IN TELEGRAM
ExoQuery - Kotlin DSL для работы с базой данных. Есть поддержка разных БД. Больше про возможности смотрит в видео

// Пример запроса
capture.select {
val p: Person = from(people)
val a: Address = join(addresses) { a -> a.personId == p.id }
Data(p.name, a.city)
}


#kotlin #sql #dsl
👍43
Forwarded from Kotlin Russia news (Alexander Nozik)
Итак, момент, которого мы долго ждали, случился!

Первый за этот год, да и за несколько последних лет Kotlin митап случится 30 мая в ВШЭ. Организатором выступает ФКН ВШЭ.

https://cs.hse.ru/kotlinmeetup/

18:00-18:10, Александр Нозик, Открытие митапа
18:10-19:10, Яна Седова, Горячие и холодные потоки в Kotlin Flow
19:10-20:10, Александр Соколинский, Пополнение в семье kotlinx: зачем нам этот ваш kotlinx.fuzz?

Для участия обязательно зарегистрироваться. Количество мест ограничено. Поэтому просьба не откладывать регистрацию если вы хотите прийти и не регистрироваться если вы не планируете приходить.

Самое замечательное в том, что планируется не один митап, а серия. Так что не забываем отправлять новые заявки в форму. Даже если вам кажется, что это не очень интересно.
👍23
🏝 Вышел Kotlin 2.1.21

Что нового:
🐘 Поддержка Gradle 8.12
👉 Исправление работы с XCode 16.3
🛠 Исправление багов

#kotlin
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍48
🏝 Вышел KSP 2.1.21-2.0.1 с поддержкой Kotlin 2.1.21

#kotlin #ksp
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16
Forwarded from Android Broadcast
🤯 Вышел Retrofit 3.0, который полностью переписали на Kotlin и перешли на OkHttp 4.12, который тоже полностью на Kotlin
👍114🤔1
🏝 Kotlin 2.2.0 уже совсем скоро - вышла Release Candidate версия

#kotlin
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥38👍31🎉1
🏝 Вышел SqlDelight 2.1.0

👉 Очень много улучшений для PostgreSql
👉 Поддержка WASM/JS
🏝 Поддержка K2
🛠 Множество исправлений и улучшений

#kotlin #kmp #sqlite #k2
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥37👍52🤯1
🏝 KStorage — единый подход к key-value хранилищам на Kotlin Multiplatform. Работает как обертка над другими хранилищами. Из коробки готовых оберток не предоставляется, что является минусом

Подробнее можно почитать в статье (РУ, 5м)

// пример использования библиотеки
class SuspendSettingsApi(private val intSettingsMap: MutableMap<String, Int>) {
val suspendMutableKrate: SuspendMutableKrate<Int> = DefaultSuspendMutableKrate(
factory = { 0 },
loader = { intSettingsMap["INT_KEY"] },
saver = { value -> intSettingsMap["INT_KEY"] = value }
)

val stateFlowSuspendMutableKrate: StateFlowSuspendMutableKrate<Int> = DefaultStateFlowSuspendMutableKrate(
factory = { 0 },
loader = { intSettingsMap["INT_KEY"] },
saver = { value -> intSettingsMap["INT_KEY"] = value }
)
}


#kotlin #kmp
Please open Telegram to view this post
VIEW IN TELEGRAM
3👍21🤔9