Oppgave - ToDo App med Room database og git

  1. Lag et repository p? github og klon repositoriet.

    • Lag et Androis Studios prosjekt i den mappen som ble opprettet
    • Put endringene dine inn i staging area (git add)
    • Legg filene til det lokale repositoriet (git commit -m)
    • Last opp filene til github (git push)
  2. Lag en branch som heter "feat/ui" og bytt til den branchen

  3. Lag en Composable komponent som heter "ToDoScreen"

    • Skal best? av en LazyColumn som holder p? en liste med gj?rem?l
    • Hvert gj?rem?l skal bli vist i et Card-composable med navn og beskrivelse
    • P? bunnen av skjermen skal vi la brukeren kunne fylle inn i input felt for navn og beskrivelse for gj?rem?let. I tillegg skal det v?re en knapp som legger til et gj?rem?l basert p? hva som er i input feltene.
  4. Legg til f?legende dependencies i prosjektet:

    val room_version = "2.6.1"

    implementation("androidx.room:room-runtime:$room_version")
    ksp("androidx.room:room-compiler:$room_version")
    implementation("androidx.room:room-ktx:$room_version")
  1. Lag en ViewModel som heter "ToDoScreenViewModel"

    • Den skal holde p? en StateFlow som er av typen ToDoScreenUIState ==> StateFlow<ToDoScreenUIState>
    • ToDoScreenUIState data klassen skal ha en variabel "tasks" som holder p? en liste med Task-objekter
    •   data class ToDoScreenUiState(
            val tasks: List<Task> = listOf()
        )
      
        @Entity
        data class Task(
            @PrimaryKey(autoGenerate = true) val id: Int = 0,
            val name: String,
            val desc: String,
        )
      
    • ViewModelen skal st?tte f?lgende funksjoner (implementer n?r det passer):
      • oppdatere UIState med alle tasks fra databasen
      • fjerne en eksisterende Task fra databasen
      • legge til en ny task i databasen
  2. Merge branchen din "feat/ui" med main og lag en ny branch fra main som heter "feat/database" og bytt til denne branchen

  3. Utvid data laget ved ? lage "ToDoRepository.kt", "Task.kt" (fra ovenfra), "ToDoDao.kt", "ToDoDatabase.kt"

    • ToDoDatabase-en skal holde p? Task entiteter og inneholde en ToDoDao
    • ToDoDao skal st?tte:
      • Insert av en Task entitet
      • Slette en Task entitet
      • Hente alle Task entiteter
    • ToDoRepository skal st?tte funksjonene i ToDoViewModel-en ved bruk av ToDoDao
  4. Koble alt dette opp ved ? opprette instanser av dem og legg dem inn som argumenter der hvor parameterne sp?r om det

    • Kan v?re noe kluss med Context