I'm following a Room tutorial for Kotlin and (at about 40 minutes) I get the following error:
Below is my code (I checked it and it seems exactly how shown in the video)
@Composable
fun AddContactDialog(
state: ContactState,
onEvent: (ContactEvent) -> Unit,
modifier: Modifier = Modifier
){
AlertDialog(
modifier = modifier,
onDismissRequest = {
onEvent(ContactEvent.HideDialog)
},
title = { Text(text = "Add contact") },
text = {
Column(
verticalArrangement = Arrangement.spacedBy(8.dp)
){
TextField(
value = state.firstName,
onValueChange = {
onEvent(ContactEvent.SetFirstName(it))
},
placeholder = {
Text(text = "First Name")
}
)
TextField(
value = state.lastName,
onValueChange = {
onEvent(ContactEvent.SetLastName(it))
},
placeholder = {
Text(text = "Last Name")
}
)
TextField(
value = state.phoneNumber,
onValueChange = {
onEvent(ContactEvent.SetPhoneNumber(it))
},
placeholder = {
Text(text = "Phone Number")
}
)
}
},
buttons = {
Box(
modifier = Modifier.fillMaxWidth(),
contentAlignment = Alignment.CenterEnd
){
Button(onClick = {
onEvent(ContactEvent.SaveContact)
}){
Text(text = "Save")
}
}
}
)
}
Here are my imports:
import androidx.appcompat.app.AlertDialog
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.material3.Button
import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.Text
import androidx.compose.material3.TextField
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.room.util.TableInfo
import androidx.compose.ui.unit.dp
androidx.appcompat.app.AlertDialog
is not the correct import, AlertDialog is a composable and is imported like this:
import androidx.compose.material3.AlertDialog
There are now multiple AlertDialog composables available (one is deprecated), but none that matches the parameters you provided. The one you want needs a confirmButton
parameter instead of the buttons
parameter. Just rename the parameter accordingly and everything should work fine.