Моя проблема в том, что я не знаю, как передать оба данных одновременно.
Это соответствующие части моего кода:
Код: Выделить всё
CalendarScreen
Код: Выделить всё
@ExperimentalLayoutApi
@ExperimentalCoroutinesApi
@Composable
internal fun CalendarScreen(
viewModel: CalendarViewModel = hiltViewModel()
) {
val selectedTopicId by viewModel.selectedTopicIdd.collectAsStateWithLifecycle()
var showModal by remember { mutableStateOf(true) }
ButtonsScreenCalendar(
onTopicButtonClicked = viewModel::onTopicClick,
onDateSelected = viewModel::onDateSelected
)
var selectedDate by remember { mutableStateOf(null) }
if (selectedDate != null) {
val date = Date(selectedDate!!)
val formattedDate = SimpleDateFormat("MMM dd, yyyy", Locale.getDefault()).format(date)
Text("Selected date: $formattedDate")
} else {
Text("No date selected")
}
if (showModal) {
DatePickerModal(
onDateSelected = {
selectedDate = it
viewModel::onDateSelected
showModal = false
},
onDismiss = { showModal = false }
)
}
}
Код: Выделить всё
ButtonsScreenCalendar
Код: Выделить всё
@ExperimentalLayoutApi
@Composable
fun ButtonsScreenCalendar(
onTopicButtonClicked: (String) -> Unit,
onDateSelected: (Long)-> Unit
) {
/* Some code */
FlowRow(modifier = rowModifier) {
it.items.forEach {
HomeButton(it) {
onTopicButtonClicked(it.id.toString())
onDateSelected
}
Spacer(modifier = chipModifier)
}
}
}
Код: Выделить всё
HomeButton
Код: Выделить всё
@Composable
fun HomeButton(
itemUI: ItemUI,
onClick: () -> Unit
) {
AssistChip(
onClick = { onClick() },
label = { Text(itemUI.title) }
)
}
Код: Выделить всё
CalendarViewModel
Код: Выделить всё
@HiltViewModel
class CalendarViewModel @Inject constructor(
private val savedStateHandle: SavedStateHandle,
val universalisRepository: UniversalisRepository,
getTopicWithDate: GetTopicWithDateUseCase,
) : ViewModel() {
private val selectedTopicIdKey = "selectedTopicIdKey"
private val selectedTopicId = savedStateHandle.getStateFlow(
key = selectedTopicIdKey,
initialValue = 1, //TODO
)
//TODO Invoque use case passing topic and date
/* Some code */
fun onTopicClick(topicId: String?) {
savedStateHandle[TOPIC_ID_ARG] = topicId
}
}
Подробнее здесь: https://stackoverflow.com/questions/790 ... ose-screen