Replace collectAsState() by collectAsStateWithLifecycle() everywhere

This commit is contained in:
Shinokuni 2023-08-20 17:54:56 +02:00
parent dab044d313
commit 698abfe32b
5 changed files with 22 additions and 18 deletions

View File

@ -108,4 +108,8 @@ dependencies {
implementation "io.coil-kt:coil-compose:2.4.0"
androidTestImplementation "org.jetbrains.kotlinx:kotlinx-coroutines-test:1.6.4"
implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.1"
implementation "androidx.lifecycle:lifecycle-viewmodel-compose:2.6.1"
implementation "androidx.lifecycle:lifecycle-runtime-compose:2.6.1"
}

View File

@ -11,10 +11,10 @@ import androidx.compose.material3.Scaffold
import androidx.compose.material3.Text
import androidx.compose.material3.TopAppBar
import androidx.compose.runtime.Composable
import androidx.compose.runtime.collectAsState
import androidx.compose.runtime.getValue
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import cafe.adriel.voyager.navigator.LocalNavigator
import cafe.adriel.voyager.navigator.currentOrThrow
import cafe.adriel.voyager.navigator.tab.Tab
@ -27,8 +27,8 @@ object AccountTab : Tab {
override val options: TabOptions
@Composable
get() = TabOptions(
index = 3u,
title = "Account"
index = 3u,
title = "Account"
)
@OptIn(ExperimentalMaterial3Api::class)
@ -36,24 +36,24 @@ object AccountTab : Tab {
override fun Content() {
val navigator = LocalNavigator.currentOrThrow
val viewModel = getViewModel<AccountViewModel>()
val closeHome by viewModel.closeHome.collectAsState()
val closeHome by viewModel.closeHome.collectAsStateWithLifecycle()
if (closeHome) {
navigator.replaceAll(AccountSelectionScreen())
}
Scaffold(
topBar = {
TopAppBar(title = { Text(text = "Account") })
}
topBar = {
TopAppBar(title = { Text(text = "Account") })
}
) { paddingValues ->
Column(
modifier = Modifier.padding(paddingValues)
modifier = Modifier.padding(paddingValues)
) {
Row {
Button(onClick = { viewModel.deleteAccount() }) {
Text(
text = "Delete"
text = "Delete"
)
}
@ -61,7 +61,7 @@ object AccountTab : Tab {
Button(onClick = { navigator.push(AccountSelectionScreen()) }) {
Text(
text = "New"
text = "New"
)
}
}

View File

@ -10,12 +10,12 @@ import androidx.compose.foundation.layout.size
import androidx.compose.material3.Icon
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.collectAsState
import androidx.compose.runtime.getValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.unit.dp
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import cafe.adriel.voyager.androidx.AndroidScreen
import cafe.adriel.voyager.navigator.LocalNavigator
import cafe.adriel.voyager.navigator.currentOrThrow
@ -30,7 +30,7 @@ class AccountSelectionScreen : AndroidScreen() {
@Composable
override fun Content() {
val viewModel = getViewModel<AccountSelectionViewModel>()
val navState by viewModel.navState.collectAsState()
val navState by viewModel.navState.collectAsStateWithLifecycle()
val navigator = LocalNavigator.currentOrThrow
Column(

View File

@ -14,7 +14,6 @@ import androidx.compose.material3.Scaffold
import androidx.compose.material3.Text
import androidx.compose.material3.TopAppBar
import androidx.compose.runtime.Composable
import androidx.compose.runtime.collectAsState
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
@ -22,6 +21,7 @@ import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import cafe.adriel.voyager.navigator.tab.Tab
import cafe.adriel.voyager.navigator.tab.TabOptions
import org.koin.androidx.compose.getViewModel
@ -41,7 +41,7 @@ object FeedTab : Tab {
val viewModel = getViewModel<FeedViewModel>()
var showDialog by remember { mutableStateOf(false) }
val state by viewModel.feedsState.collectAsState()
val state by viewModel.feedsState.collectAsStateWithLifecycle()
if (showDialog) {
AddFeedDialog(

View File

@ -26,11 +26,11 @@ import androidx.compose.material3.TopAppBar
import androidx.compose.material3.rememberDrawerState
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.collectAsState
import androidx.compose.runtime.getValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.painterResource
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import cafe.adriel.voyager.navigator.LocalNavigator
import cafe.adriel.voyager.navigator.currentOrThrow
import cafe.adriel.voyager.navigator.tab.Tab
@ -60,9 +60,9 @@ object TimelineTab : Tab {
override fun Content() {
val viewModel = getViewModel<TimelineViewModel>()
val state by viewModel.timelineState.collectAsState()
val drawerState by viewModel.drawerState.collectAsState()
val isRefreshing by viewModel.isRefreshing.collectAsState()
val state by viewModel.timelineState.collectAsStateWithLifecycle()
val drawerState by viewModel.drawerState.collectAsStateWithLifecycle()
val isRefreshing by viewModel.isRefreshing.collectAsStateWithLifecycle()
val navigator = LocalNavigator.currentOrThrow