Как идиоматически правильно будет вызывать открытие-закрытие боттомшита? Вариант А - мутировать

булевую переменную стейта внутри условного onClick, а шит открывать внутри LaunchedEffect.

LaunchedEffect(isSheetHidden) {
if (isSheetHidden) sheetState.hide() else sheetState.show()
}

или вариант Б - использовать rememberCoroutineScope и запускать руками scope.launch { sheetState.show() }?

4 ответов

11 просмотров

Вот такое подходит? https://github.com/androidx/androidx/blob/androidx-main/compose/material/material/samples/src/main/java/androidx/compose/material/samples/BottomSheetScaffoldSamples.kt

Vitaliy Babichev
Вот такое подходит? https://github.com/androidx/a...

Подходит. Вернее, оба варианта одинаково задачу выполняют, но я вдруг задумался о том, а не является ли один из них не “православным”. ¯\_(ツ)_/¯ С одной стороны есть документация, которая четко гласит: This function should not be used to (re-)launch ongoing tasks in response to callback events by way of storing callback data in MutableState passed to key1. Instead, see rememberCoroutineScope to obtain a CoroutineScope that may be used to launch ongoing jobs scoped to the composition in response to event callbacks. , то бишь есть доступ к скоупу и нужно использовать его, а с другой стороны открытый боттомшит может быть частью стейта экрана, и тут без LaunchedEffect не обойтись.

<toxic-mode>помню, как до компоуз, открытие диалога сводилось к одному простому коллбеку без каких-то переусложений :) </toxic-mode>

lounah
<toxic-mode>помню, как до компоуз, открытие диалог...

Та да, особенно когда только появился FragmentDialog (или DialogFragment? Не помню уже), и использование "старых" диалогов, включая максимально простой AlertDialog, внезапно стало discouraged.

Похожие вопросы

Обсуждают сегодня

А если изначально бот работал так : есть сайт онлайн школы. У каждого ученика свой кабинет. Где он авторизуется по своим данным. И уже в кабинете, на самом сайте делает оплату...
Денис 💡 Фрилансер
13
что это и почему оно? executor.start_polling(bot, skip_updates=True, on_startup=on_startup, File "/usr/local/lib/python3.10/dist-packages/aiogram/utils/executor.py", line 4...
𐌍𐌄 ᕓ𐌄𐌓𐌌Ꝋ𐌓𐌄
2
Возможно речь идёт про сворачивание текста функций в редакторе кода?
George
9
@nerzh 1) а как сделать так что бы при приеме сообщений бот игнорировал/убирал форматирование? Есть стандарные функции для убирания форматирования текста? 2) Возможно ли ...
Куся 🌿⃤ __UKS
5
Ребят, привет. Интересует вопрос: есть ли способ получить доступ к WebView в Linux? Рылся-ковырялся, решения не нашел. Объясню сразу задачу, возможно, скажете, что копаю не в...
advanc3d
13
Что нового в Xcode 16 Xcode 16 приносит много обновлений. Главное - появление ИИ, которое отметили еще в кейноуте. В Xcode появится предиктивное завершение кода, основанное н...
✌️(´ヮ`)
1
тогда вопрос по вебхукам - необходимо ли иметь вебсервер на белом айпишнике что б пользоваться вебхуками? или можно на домашнем компе гонять?
Куся 🌿⃤ __UKS
3
Напомните пожалуйста, v1.1 работает на PHP 8.2?
Ross
7
Надо ли говорить, что нужно делать локальные зеркала всего что надо вам для работы, что бы не получилось, как с Docker одним прекрасным утром? 🌝 США запрещают предоставление ...
Alex Sherbakov
6
🙋‍♂️Как вы относитесь к обновлению либки под async/await в виде новой мажорной версии? Я так понял EventLoopFuture доживает последние дни. Я бы в версии на EventLoopFuture уж...
iMike
3
Карта сайта