LiveData to Flow
This commit is contained in:
@@ -14,6 +14,7 @@ import androidx.compose.ui.Modifier
|
|||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
import androidx.lifecycle.viewmodel.compose.viewModel
|
import androidx.lifecycle.viewmodel.compose.viewModel
|
||||||
import androidx.navigation.NavController
|
import androidx.navigation.NavController
|
||||||
|
import com.sockenklaus.batterytracker.room.entities.Battery
|
||||||
import com.sockenklaus.batterytracker.room.entities.Charge
|
import com.sockenklaus.batterytracker.room.entities.Charge
|
||||||
import com.sockenklaus.batterytracker.ui.AppBarTitle
|
import com.sockenklaus.batterytracker.ui.AppBarTitle
|
||||||
import com.sockenklaus.batterytracker.ui.Routes
|
import com.sockenklaus.batterytracker.ui.Routes
|
||||||
@@ -28,8 +29,8 @@ fun BatteryDetails(
|
|||||||
batteryId: Int? = null
|
batteryId: Int? = null
|
||||||
){
|
){
|
||||||
val model: BatteryDetailsViewModel = viewModel()
|
val model: BatteryDetailsViewModel = viewModel()
|
||||||
val battery by model.battery.observeAsState()
|
val battery by model.battery.collectAsState(Battery(name = ""))
|
||||||
val charges: List<Charge> by model.charges.observeAsState(emptyList())
|
val charges: List<Charge> by model.charges.collectAsState(emptyList())
|
||||||
|
|
||||||
Column(
|
Column(
|
||||||
modifier = Modifier.padding(bottom = 16.dp)
|
modifier = Modifier.padding(bottom = 16.dp)
|
||||||
|
|||||||
@@ -1,14 +1,15 @@
|
|||||||
package com.sockenklaus.batterytracker.ui.models
|
package com.sockenklaus.batterytracker.ui.models
|
||||||
|
|
||||||
import android.app.Application
|
import android.app.Application
|
||||||
import androidx.lifecycle.AndroidViewModel
|
import androidx.lifecycle.*
|
||||||
import androidx.lifecycle.LiveData
|
|
||||||
import androidx.lifecycle.MutableLiveData
|
|
||||||
import androidx.lifecycle.SavedStateHandle
|
|
||||||
import androidx.lifecycle.asLiveData
|
|
||||||
import com.sockenklaus.batterytracker.room.BatteryTrackerDB
|
import com.sockenklaus.batterytracker.room.BatteryTrackerDB
|
||||||
import com.sockenklaus.batterytracker.room.entities.Battery
|
import com.sockenklaus.batterytracker.room.entities.Battery
|
||||||
import com.sockenklaus.batterytracker.room.entities.Charge
|
import com.sockenklaus.batterytracker.room.entities.Charge
|
||||||
|
import kotlinx.coroutines.flow.Flow
|
||||||
|
import kotlinx.coroutines.flow.MutableStateFlow
|
||||||
|
import kotlinx.coroutines.flow.collect
|
||||||
|
import kotlinx.coroutines.flow.flow
|
||||||
|
import kotlinx.coroutines.launch
|
||||||
|
|
||||||
class BatteryDetailsViewModel(
|
class BatteryDetailsViewModel(
|
||||||
application: Application,
|
application: Application,
|
||||||
@@ -17,15 +18,15 @@ class BatteryDetailsViewModel(
|
|||||||
|
|
||||||
private val db = BatteryTrackerDB.getInstance(application)
|
private val db = BatteryTrackerDB.getInstance(application)
|
||||||
|
|
||||||
val battery: LiveData<Battery> = if(state.get<Int?>("batteryId") !== null) {
|
val battery: Flow<Battery> = if(state.get<Int?>("batteryId") !== null) {
|
||||||
db.batteryDao().getBatteryById(state["batteryId"]!!).asLiveData()
|
db.batteryDao().getBatteryById(state["batteryId"]!!)
|
||||||
} else {
|
} else {
|
||||||
MutableLiveData()
|
MutableStateFlow(Battery(name=""))
|
||||||
}
|
}
|
||||||
|
|
||||||
val charges: LiveData<List<Charge>> = if(state.get<Int?>("batteryId") !== null){
|
val charges: Flow<List<Charge>> = if(state.get<Int?>("batteryId") !== null){
|
||||||
db.chargeDao().getChargesByBatteryId(state["batteryId"]!!).asLiveData()
|
db.chargeDao().getChargesByBatteryId(state["batteryId"]!!)
|
||||||
} else {
|
} else {
|
||||||
MutableLiveData()
|
MutableStateFlow(emptyList())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user