Skip to content

TimePicker

Returns a LocalTime object

@Composable
fun TimePickerExample() {
var showTimePicker by remember { mutableStateOf(false) }
var selectedTime by remember { mutableStateOf(LocalTime.now()) }
Column(
modifier = Modifier
.fillMaxSize()
.padding(16.dp),
horizontalAlignment = Alignment.CenterHorizontally,
verticalArrangement = Arrangement.Center
) {
Text(
text = "Selected Time: ${selectedTime.format(DateTimeFormatter.ofPattern("HH:mm"))}",
)
Spacer(modifier = Modifier.height(16.dp))
Button(onClick = { showTimePicker = true }) {
Text("Pick a Time")
}
if (showTimePicker) {
TimePickerDialog(
onDismissRequest = { showTimePicker = false },
onTimeSelected = { time ->
selectedTime = time
showTimePicker = false
}
)
}
}
}
@Composable
fun TimePickerDialog(
onDismissRequest: () -> Unit,
onTimeSelected: (LocalTime) -> Unit
) {
val timePickerState = rememberTimePickerState(
initialHour = LocalTime.now().hour,
initialMinute = LocalTime.now().minute,
is24Hour = true
)
AlertDialog(
onDismissRequest = onDismissRequest,
confirmButton = {
TextButton(onClick = {
onTimeSelected(LocalTime.of(timePickerState.hour, timePickerState.minute))
}) {
Text("OK")
}
},
dismissButton = {
TextButton(onClick = onDismissRequest) {
Text("Cancel")
}
},
text = {
TimePicker(state = timePickerState)
}
)
}
@OptIn(ExperimentalMaterial3Api::class)
@Composable
fun Material3AlarmTimePicker() {
val timePickerState =
rememberTimePickerState(initialHour = 7, initialMinute = 0, is24Hour = true)
var showPicker by remember { mutableStateOf(false) }
Text("${timePickerState.hour}:${timePickerState.minute}")
FilledTonalButton(onClick = { showPicker = !showPicker }) {
Text("Set Alarm Time")
}
Text(text = "Alarm Time: ${timePickerState.hour}:${timePickerState.minute.toString().padStart(2, '0')}")
if (showPicker) {
Dialog(
onDismissRequest = { showPicker = false }
) {
Column(
Modifier
.clip(RoundedCornerShape(20.dp))
.background(Color.White)
.padding(10.dp)
) {
TimePicker(state = timePickerState)
FilledTonalButton(onClick = {
showPicker = false
}) {
Text("Confirm")
}
}
}
}
}