WIP: Hilt integration

TODO: https://developer.android.com/develop/ui/compose/libraries#hilt-navigation
This commit is contained in:
Dennis Schoepf 2025-05-13 23:49:54 +02:00
parent fb9983c6df
commit f8d046f3f6
6 changed files with 44 additions and 2 deletions

View file

@ -3,6 +3,8 @@ plugins {
alias(libs.plugins.kotlin.android) alias(libs.plugins.kotlin.android)
alias(libs.plugins.kotlin.compose) alias(libs.plugins.kotlin.compose)
alias(libs.plugins.kotlin.serialization) alias(libs.plugins.kotlin.serialization)
alias(libs.plugins.ksp)
alias(libs.plugins.hilt)
} }
android { android {
@ -51,6 +53,8 @@ dependencies {
implementation(libs.androidx.material3) implementation(libs.androidx.material3)
implementation(libs.androidx.navigation.compose) implementation(libs.androidx.navigation.compose)
implementation(libs.kotlinx.serialization) implementation(libs.kotlinx.serialization)
implementation(libs.hilt.android)
ksp(libs.hilt.compiler)
testImplementation(libs.junit) testImplementation(libs.junit)

View file

@ -0,0 +1,11 @@
package com.dnsc.plaindo
import android.app.Application
import dagger.hilt.android.HiltAndroidApp
@HiltAndroidApp
class PlaindoApplication: Application() {
override fun onCreate() {
super.onCreate()
}
}

View file

@ -0,0 +1,18 @@
package com.dnsc.plaindo.ui.models
import androidx.lifecycle.SavedStateHandle
import androidx.lifecycle.ViewModel
import com.dnsc.plaindo.data.Todo
import com.dnsc.plaindo.data.TodoFileRepository
import dagger.hilt.android.lifecycle.HiltViewModel
import javax.inject.Inject
@HiltViewModel
class MainViewModel @Inject constructor(
private val savedStateHandle: SavedStateHandle,
private val todoFileRepository: TodoFileRepository
): ViewModel() {
fun getAllTodos(): List<Todo> {
return todoFileRepository.todos
}
}

View file

@ -7,10 +7,12 @@ import androidx.compose.material3.Text
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.navigation.NavHostController import androidx.navigation.NavHostController
import com.dnsc.plaindo.ui.components.TopBar import com.dnsc.plaindo.ui.models.MainViewModel
@Composable @Composable
fun PlaindoOverviewScreen(navController: NavHostController, innerPadding: PaddingValues) { fun PlaindoOverviewScreen(navController: NavHostController, innerPadding: PaddingValues) {
val mainViewModel: MainViewModel = hiltViewModel()
Column(modifier = Modifier.padding(innerPadding)) { Column(modifier = Modifier.padding(innerPadding)) {
Text(text = "Overview") Text(text = "Overview")
} }

View file

@ -4,4 +4,6 @@ plugins {
alias(libs.plugins.kotlin.android) apply false alias(libs.plugins.kotlin.android) apply false
alias(libs.plugins.kotlin.compose) apply false alias(libs.plugins.kotlin.compose) apply false
alias(libs.plugins.kotlin.serialization) apply false alias(libs.plugins.kotlin.serialization) apply false
alias(libs.plugins.hilt) apply false
alias(libs.plugins.ksp) apply false
} }

View file

@ -10,6 +10,8 @@ activityCompose = "1.8.0"
composeBom = "2024.09.00" composeBom = "2024.09.00"
navigationCompose = "2.8.9" navigationCompose = "2.8.9"
kotlinxSerialization = "1.7.3" kotlinxSerialization = "1.7.3"
hilt = "2.56.2"
ksp = "2.1.20-2.0.1"
[libraries] [libraries]
androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "coreKtx" } androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "coreKtx" }
@ -28,10 +30,13 @@ androidx-ui-test-manifest = { group = "androidx.compose.ui", name = "ui-test-man
androidx-ui-test-junit4 = { group = "androidx.compose.ui", name = "ui-test-junit4" } androidx-ui-test-junit4 = { group = "androidx.compose.ui", name = "ui-test-junit4" }
androidx-material3 = { group = "androidx.compose.material3", name = "material3" } androidx-material3 = { group = "androidx.compose.material3", name = "material3" }
kotlinx-serialization = { group = "org.jetbrains.kotlinx", name = "kotlinx-serialization-json", version.ref = "kotlinxSerialization" } kotlinx-serialization = { group = "org.jetbrains.kotlinx", name = "kotlinx-serialization-json", version.ref = "kotlinxSerialization" }
hilt-android = { group = "com.google.dagger", name = "hilt-android", version.ref = "hilt" }
hilt-compiler = { group = "com.google.dagger", name = "hilt-compiler", version.ref = "hilt" }
[plugins] [plugins]
android-application = { id = "com.android.application", version.ref = "agp" } android-application = { id = "com.android.application", version.ref = "agp" }
kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" } kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" }
kotlin-compose = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" } kotlin-compose = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" }
kotlin-serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" } kotlin-serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" }
ksp = { id = "com.google.devtools.ksp", version.ref = "ksp" }
hilt = {id = "com.google.dagger.hilt.android", version.ref = "hilt" }