Change viewmodel instanciation.

This commit is contained in:
Thomas Andres Gomez 2021-05-07 18:08:49 +02:00
parent b28df77d19
commit a2447e2376
5 changed files with 28 additions and 26 deletions

5
.idea/misc.xml generated
View file

@ -83,6 +83,11 @@
<entry key="../../../../../layout/compose-model-1620402873003.xml" value="0.28125" />
<entry key="../../../../../layout/compose-model-1620403048637.xml" value="0.28125" />
<entry key="../../../../../layout/compose-model-1620403067126.xml" value="0.23514851485148514" />
<entry key="../../../../../layout/compose-model-1620403347942.xml" value="0.28125" />
<entry key="../../../../../layout/compose-model-1620403349332.xml" value="0.28125" />
<entry key="../../../../../layout/compose-model-1620403526292.xml" value="0.16300675675675674" />
<entry key="../../../../../layout/compose-model-1620403554223.xml" value="0.23514851485148514" />
<entry key="../../../../../layout/compose-model-1620403674440.xml" value="0.2962962962962963" />
<entry key="app/src/main/res/drawable-v24/ic_launcher_foreground.xml" value="0.2898148148148148" />
<entry key="app/src/main/res/drawable/ic_baseline_local_library_24.xml" value="0.25462962962962965" />
<entry key="app/src/main/res/drawable/ic_google.xml" value="0.2962962962962963" />

View file

@ -9,6 +9,7 @@ import androidx.compose.animation.core.tween
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.livedata.observeAsState
import androidx.lifecycle.viewmodel.compose.viewModel
import com.pixelized.biblib.ui.composable.screen.LoginScreenComposable
import com.pixelized.biblib.ui.composable.screen.MainScreenComposable
import com.pixelized.biblib.ui.composable.screen.SplashScreenComposable
@ -20,7 +21,6 @@ import com.pixelized.biblib.utils.BitmapCache
class MainActivity : ComponentActivity() {
private val navigationViewModel: NavigationViewModel by viewModels()
private val authenticationViewModel: AuthenticationViewModel by viewModels()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
@ -29,7 +29,7 @@ class MainActivity : ComponentActivity() {
setContent {
BibLibTheme {
ContentComposable(navigationViewModel, authenticationViewModel)
ContentComposable()
}
}
}
@ -42,20 +42,15 @@ class MainActivity : ComponentActivity() {
}
@Composable
fun ContentComposable(
navigationViewModel: NavigationViewModel,
authenticationViewModel: AuthenticationViewModel
) {
fun ContentComposable() {
val navigationViewModel = viewModel<NavigationViewModel>()
val main by navigationViewModel.screen.observeAsState()
Crossfade(targetState = main, animationSpec = tween(1000)) {
Crossfade(targetState = main) {
when (it) {
is Screen.SplashScreen -> SplashScreenComposable(navigationViewModel)
is Screen.MainScreen -> MainScreenComposable(navigationViewModel)
is Screen.LoginScreen -> LoginScreenComposable(
navigationViewModel = navigationViewModel,
authenticationViewModel = authenticationViewModel
)
is Screen.SplashScreen -> SplashScreenComposable()
is Screen.LoginScreen -> LoginScreenComposable()
is Screen.MainScreen -> MainScreenComposable()
}
}
}

View file

@ -27,6 +27,7 @@ import androidx.compose.ui.text.input.PasswordVisualTransformation
import androidx.compose.ui.text.input.VisualTransformation
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import androidx.lifecycle.viewmodel.compose.viewModel
import com.pixelized.biblib.R
import com.pixelized.biblib.ui.theme.BibLibTheme
import com.pixelized.biblib.ui.viewmodel.AuthenticationViewModel
@ -36,17 +37,16 @@ import com.pixelized.biblib.ui.viewmodel.NavigationViewModel
@Composable
fun LoginScreenComposablePreview() {
BibLibTheme {
val navigationViewModel = NavigationViewModel()
val authenticationViewModel = AuthenticationViewModel()
LoginScreenComposable(navigationViewModel, authenticationViewModel)
LoginScreenComposable()
}
}
@Composable
fun LoginScreenComposable(
navigationViewModel: NavigationViewModel,
authenticationViewModel: AuthenticationViewModel
) {
val navigationViewModel = viewModel<NavigationViewModel>()
val authenticationViewModel = viewModel<AuthenticationViewModel>()
val typography = MaterialTheme.typography
Column(

View file

@ -2,7 +2,6 @@ package com.pixelized.biblib.ui.composable.screen
import androidx.compose.animation.Crossfade
import androidx.compose.animation.core.tween
import androidx.compose.foundation.layout.Box
import androidx.compose.material.*
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.sharp.ArrowBack
@ -13,6 +12,7 @@ import androidx.compose.runtime.getValue
import androidx.compose.runtime.livedata.observeAsState
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.tooling.preview.Preview
import androidx.lifecycle.viewmodel.compose.viewModel
import com.pixelized.biblib.R
import com.pixelized.biblib.ui.composable.pages.DetailPageComposable
import com.pixelized.biblib.ui.composable.pages.HomePageComposable
@ -41,14 +41,14 @@ fun ToolbarComposableLightPreview() {
@Preview
@Composable
fun MainScreenComposablePreview() {
val viewModel = NavigationViewModel()
BibLibTheme {
MainScreenComposable(navigationViewModel = viewModel)
MainScreenComposable()
}
}
@Composable
fun MainScreenComposable(navigationViewModel: NavigationViewModel) {
fun MainScreenComposable() {
val navigationViewModel = viewModel<NavigationViewModel>()
val page by navigationViewModel.page.observeAsState()
LaunchedEffect(key1 = "MainScreen", block = {
@ -58,7 +58,7 @@ fun MainScreenComposable(navigationViewModel: NavigationViewModel) {
Scaffold(
topBar = { ToolbarComposable(navigationViewModel) },
) {
Crossfade(targetState = page, animationSpec = tween(1000)) {
Crossfade(targetState = page) {
when (it) {
is Page.HomePage -> HomePageComposable(navigationViewModel)
is Page.Detail -> DetailPageComposable(it.book)

View file

@ -11,6 +11,7 @@ import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.tooling.preview.Preview
import androidx.lifecycle.viewmodel.compose.viewModel
import com.pixelized.biblib.ui.theme.BibLibTheme
import com.pixelized.biblib.ui.viewmodel.NavigationViewModel
import kotlinx.coroutines.*
@ -19,15 +20,16 @@ import kotlinx.coroutines.*
@Preview
@Composable
fun SplashScreenComposablePreview() {
val viewModel = NavigationViewModel()
BibLibTheme {
SplashScreenComposable(viewModel)
SplashScreenComposable()
}
}
@Composable
fun SplashScreenComposable(navigationViewModel: NavigationViewModel) {
fun SplashScreenComposable() {
val navigationViewModel = viewModel<NavigationViewModel>()
val typography = MaterialTheme.typography
Box(
modifier = Modifier
.fillMaxHeight()