diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 1b657cc..de86c2b 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -59,6 +59,8 @@ dependencies { implementation("androidx.compose.ui:ui-graphics") implementation("androidx.compose.ui:ui-tooling-preview") implementation("androidx.compose.material3:material3") + implementation ("androidx.lifecycle:lifecycle-viewmodel-compose:2.6.0") + implementation ("androidx.lifecycle:lifecycle-runtime-compose:2.6.0") testImplementation("junit:junit:4.13.2") androidTestImplementation("androidx.test.ext:junit:1.1.5") androidTestImplementation("androidx.test.espresso:espresso-core:3.5.1") diff --git a/app/src/main/java/com/discordtime/whatudoing/MainActivity.kt b/app/src/main/java/com/discordtime/whatudoing/MainActivity.kt index a762d00..d90b52f 100644 --- a/app/src/main/java/com/discordtime/whatudoing/MainActivity.kt +++ b/app/src/main/java/com/discordtime/whatudoing/MainActivity.kt @@ -1,26 +1,34 @@ package com.discordtime.whatudoing import android.os.Bundle +import android.widget.Toast import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.compose.foundation.Image import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding -import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Button import androidx.compose.material3.Surface import androidx.compose.material3.Text import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.saveable.rememberSaveable +import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.res.painterResource import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp +import androidx.lifecycle.compose.collectAsStateWithLifecycle +import androidx.lifecycle.viewmodel.compose.viewModel import com.discordtime.whatudoing.ui.theme.WhatudoingTheme - class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -29,23 +37,53 @@ class MainActivity : ComponentActivity() { // A surface container using the 'background' color from the theme Surface( modifier = Modifier.fillMaxSize(), - color = MaterialTheme.colorScheme.background + color = Color(0xFF00D7AD) ) { - Greeting("Android") + val viewModel = viewModel() + val stateFromViewModel by viewModel.state.collectAsStateWithLifecycle() + var state by rememberSaveable { + mutableStateOf(true) + } + Column( + Modifier.padding(26.dp, 36.dp), + verticalArrangement = Arrangement.Center, + horizontalAlignment = Alignment.CenterHorizontally + ) { + Logo() + Row( + modifier = Modifier + .padding(top = 50.dp) + .fillMaxWidth(), + horizontalArrangement = Arrangement.SpaceBetween + ) { + Text(text = stateFromViewModel.name) + Text(text = stateFromViewModel.age.toString()) + Text(text = stateFromViewModel.motherName) + } + Button( + modifier = Modifier.padding(top = 50.dp), + onClick = { + state = !state + viewModel.setState(StateUI("Jovi", 35, "Nathalia")) + Toast.makeText( + applicationContext, "Will", + Toast.LENGTH_SHORT + ).show() + }) { + if (state) { + Text(text = "Test") + } else { + Text("outro texto") + } + + } + } } } } } } -@Composable -fun Greeting(name: String, modifier: Modifier = Modifier) { - Text( - text = "Hello $name!", - modifier = modifier - ) -} - @Preview(showBackground = true) @Composable fun GreetingPreview() { @@ -60,7 +98,14 @@ fun GreetingPreview() { horizontalAlignment = Alignment.CenterHorizontally ) { Logo() + Button( + modifier = Modifier.padding(top = 50.dp), + onClick = {}) { + Text(text = "Test") + + } } + } } } diff --git a/app/src/main/java/com/discordtime/whatudoing/MainViewModel.kt b/app/src/main/java/com/discordtime/whatudoing/MainViewModel.kt new file mode 100644 index 0000000..d93aeb9 --- /dev/null +++ b/app/src/main/java/com/discordtime/whatudoing/MainViewModel.kt @@ -0,0 +1,21 @@ +package com.discordtime.whatudoing + +import androidx.lifecycle.ViewModel +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.asStateFlow +import kotlinx.coroutines.flow.update + +class MainViewModel : ViewModel() { + private val _state = MutableStateFlow(StateUI()) + val state = _state.asStateFlow() + + fun setState(newState : StateUI){ + _state.update {newState} + } +} + +data class StateUI( + val name: String = "Fulano", + val age: Int = 0, + val motherName: String = "Fulana" +)