프로젝트를 진행하며 Compose로 개발할 때 주의할 점에 대해 정리해보자
val datePickerDialog = DatePickerDialog(
context,
R.style.DatePickerStyle,
{ _, year, month, day ->
if(isClickedStartDay) startDay = TimeFormatter.getDatePickerDashDate(year, month, day)
else endDay = TimeFormatter.getDatePickerDashDate(year, month, day)
},
calendar.get(Calendar.YEAR),
calendar.get(Calendar.MONTH),
calendar.get(Calendar.DAY_OF_MONTH)
)
val datePickerDialog = remember {
DatePickerDialog(
context,
R.style.DatePickerStyle,
{ _, year, month, day ->
if(isClickedStartDay) startDay = TimeFormatter.getDatePickerDashDate(year, month, day)
else endDay = TimeFormatter.getDatePickerDashDate(year, month, day)
},
calendar.get(Calendar.YEAR),
calendar.get(Calendar.MONTH),
calendar.get(Calendar.DAY_OF_MONTH)
)
}
LaunchedEffect(scrollState) {
snapFlow { scrollState.firstVisibleItemIndex }
.collect { index ->
isFilterAtTop = index >= 2
}
}
LaunchedEffect(scrollState) {
snapFlow { scrollState.firstVisibleItemIndex }
.distinctUntilChanged()
.collect { index ->
isFilterAtTop = index >= 2
}
}
Image(
modifier = Modifier
.clickable(
interactionSource = remember { MutableInteractionSource() }
// 생략
)
)
val interactionSource = remember { MutableInteractionSource() }
Image(
modifier = Modifier
.clickable(
interactionSource = interactionSource
// 생략
)
)
@HiltViewModel
class DogmaniaViewModel @Inject constructor(
): BaseViewModel<DogmaniaPageState>(DogmaniaPageState()) {
private val today = TimeFormatter.getToday()
private val year = TimeFormatter.getYear(today)
private val month = TimeFormatter.getMonth(today)
// 생략...
}
@HiltViewModel
class DogmaniaViewModel @Inject constructor(
private val timeFormatter: TimeFormatter
): BaseViewModel<DogmaniaPageState>(DogmaniaPageState()) {
private val today = timeFormatter.getToday()
private val year = timeFormatter.getYear(today)
private val month = timeFormatter.getMonth(today)
// 생략...
}