0
@HiltViewModel
class TaskViewModel @Inject constructor(
    private val repository: AppRepository
) : ViewModel() {
    fun getLiveData(date: LocalDate): LiveData<List<Task>> {
        ...
    }
}

My screen:

@Composable
fun TaskScreen(modifier: Modifier = Modifier, taskViewModel: TaskViewModel = 
viewModel()) {
val date = LocalDate.now()
val tasks = taskViewModel.getLiveData(date = date).observeAsState()
tasks.value?.let { items ->
    LazyColumn(modifier = modifier) {
        items(items) { task ->
          ...
            }
        }
    }
}

The app crashes with the following exception:

  Caused by: java.lang.NoSuchMethodException: org.mycodelab.test2.viewmodel.TaskDayViewModel.<init> []
    at java.lang.Class.getConstructor0(Class.java:2363)
    at java.lang.Class.getDeclaredConstructor(Class.java:2201)
    at androidx.lifecycle.ViewModelProvider$NewInstanceFactory.create(ViewModelProvider.kt:202)

This is my first attempt at using jetpack compose.

DeKekem
  • 589
  • 10
  • 20

1 Answers1

1

The viewModel when using Hilt in Compose becomes hiltViewModel, so your code would look like this:

fun TaskScreen(modifier: Modifier = Modifier, taskViewModel: TaskViewModel = 
hiltViewModel()) {}

Code Poet
  • 6,222
  • 2
  • 29
  • 50