TGViewer
Android Good Reads Android Good Reads @droidgr · 4.02K subscribers
Post #2175 3.27K
Абстракция для работы со строками

Возникали вопросы как работать со строками в Compose на UI и на data слое чтоб это выглядело удобно? А еще чтобы строки с разных источников были закрыты общей абстракцией и не нужно было разделять строки от пользователя, string.xml и пришедшие с бекенда

Автор предлагает воспользоваться sealed interface такого вида:
sealed interface StringHolder {
// These are the 2 essential Holders
data class Value(val value: String) : StringHolder
data class Resource(@StringRes val resId: Int) : StringHolder

// These are additional and will come in handy!
class ParametrizedResource(@StringRes val resId: Int, vararg val formatArgs: Any) : StringHolder
class Plural(@PluralsRes val resId: Int, val count: Int, vararg val formatArgs: Any) : StringHolder
}


Пример использования:
@Composable
fun ExampleText(stringHolder: StringHolder) {
Text(text = stringHolder.value)
}

class MessageDataSource(private val context: Context, private val api: Api) {
suspend fun sendMessage(message: StringHolder) {
api.sendMessage(message.fromContext(context))
}
}



Из минусов - конечно сложновато это адаптировать к CMP, да и протекание логики в UI может не соответствовать вашей архитектуре.
  • 👍 7
  • 👎 4
  • 🔥 1
  • 💯 1
More from @droidgr
  1. Sep 30, 2026🏗 Строим мультиагентные системы для разработки на Podlodka AI Crew Инженерные задачи редк…
  2. Aug 6, 2026Если вам всё ещё интересна мобильная разработка, рекомендую подписаться на канал Kotlin Ad…
  3. Aug 4, 2026Post #2504
  4. Jul 26, 2026Как я играю в экосистему продуктов Наиболее близка мне сейчас тема ухода за животными. Я м…
  5. Jul 26, 2026Привет! Как вы могли заметить, я более не помогаю вести данный канал. Если вам понравилось…
  6. Jun 10, 2026Немного про продуктивность без AI. Старый добрый помодоро таймер, но ужесточенный трекинго…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →