Код: Выделить всё
val showGpsDisabledDialog by viewModel.showGpsDisabledDialog.collectAsState()
Log.d(TAG, showGpsDisabledDialog.toString())
if (showGpsDisabledDialog) {
Log.d(TAG, "dialog")
val context = LocalContext.current
BasicAlertDialog(
onDismissRequest = {
Log.d(TAG, "dismiss")
viewModel.closeGpsDisabledDialog()
},
) {
Text("dialog")
}
}
Код: Выделить всё
@HiltViewModel
class MapViewModel @Inject constructor(): ViewModel() {
private var _showGpsDisabledDialog: MutableStateFlow = MutableStateFlow(true)
val showGpsDisabledDialog: StateFlow get() = _showGpsDisabledDialog.asStateFlow()
fun openGpsDisabledDialog() {
if(!_showGpsDisabledDialog.value)
_showGpsDisabledDialog.value = true
}
fun closeGpsDisabledDialog() {
if(_showGpsDisabledDialog.value)
_showGpsDisabledDialog.value = false
}
Я пытался сохранить состояние в компонуемой модели, а затем в модели представления.
Я пытался использовать LaunchedEffect для установки этих флагов ( поэтому они неверны до компонуемой визуализации)
Я попробовал установить для них значение true в модели представления с использованием задержки.
Я обнаружил, что диалоговое окно отображается дважды в этих случаях, отображая простой диалог с текстом и заметил, что два текста перекрываются
Подробнее здесь: https://stackoverflow.com/questions/793 ... ying-twice
Мобильная версия