Android75
11/30/2022, 10:37 AMAndroid75
11/30/2022, 10:40 AMChris Fillmore
11/30/2022, 2:29 PMAndroid75
11/30/2022, 4:26 PM@AndroidEntryPoint
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
val navController = rememberNavController()
MyAppTheme {
// A surface container using the 'background' color from the theme
Surface(
modifier = Modifier.fillMaxSize(),
color = MaterialTheme.colors.background
) {
NavigationComponent(navController)
}
}
}
}
}
@Composable
fun NavigationComponent(navController: NavHostController) {
NavHost(
navController = navController,
startDestination = Destination.Dashboard.path
) {
composable(Destination.Dashboard.path) {
val viewModel: DashBoardViewModel = hiltViewModel()
DashBoardScreen(viewModel)
}
}
}
@Composable
fun DashBoardScreen(viewModel: DashBoardViewModel) {
val dashBoardState by viewModel.uiState.collectAsState()
Column(modifier = Modifier.fillMaxSize().background(Color.White)) {
Text(
text = "${dashBoardState.title}",
fontSize = 20.sp,
color = Color.Black,
textAlign = TextAlign.Center,
modifier = Modifier.padding(16.dp)
)
Button(onClick = {viewModel.changeTitle()}) {
Text(
text = "CHANGE")
}
}
}
@HiltViewModel
class DashBoardViewModel @Inject constructor(
) : ViewModel() {
val uiState = MutableStateFlow(DashboardState(false))
fun changeTitle() {
viewModelScope.launch {
uiState.emit(uiState.value.copy(
title = "Ciao"
))
}
}
}
data class DashboardState(
var isLoading: Boolean = false,
var title: String = "start"
)
Android75
11/30/2022, 4:27 PMÖmer Faruk Delibaş
11/30/2022, 5:33 PMtext = "${dashBoardState.title}"
this to text = dashBoardState.title
. Because it’s already string. And maybe some little improvements for SOLID but apart from that your code is working.Android75
12/01/2022, 7:04 AMAndroid75
12/01/2022, 7:21 AMAndroid75
12/01/2022, 7:26 AM"androidx.compose.ui:ui:1.3.1" si mandatory to use compile and target 33
Android75
12/01/2022, 7:30 AM