Skip to content

Commit 453258b

Browse files
committed
add viewmodel and flow example [FoKE-Developers#22]
- HomeViewModel 추가 및 예제 작성 - HomeScreen과 HomeViewModel 연결
1 parent 550830f commit 453258b

File tree

2 files changed

+30
-1
lines changed

2 files changed

+30
-1
lines changed

presenter/src/main/java/com/foke/together/presenter/screen/HomeScreen.kt

+8-1
Original file line numberDiff line numberDiff line change
@@ -8,18 +8,24 @@ import androidx.compose.material3.MaterialTheme
88
import androidx.compose.material3.Surface
99
import androidx.compose.material3.Text
1010
import androidx.compose.runtime.Composable
11+
import androidx.compose.runtime.collectAsState
12+
import androidx.compose.runtime.getValue
1113
import androidx.compose.ui.Alignment
1214
import androidx.compose.ui.Modifier
1315
import androidx.compose.ui.tooling.preview.Preview
1416
import androidx.compose.ui.unit.sp
17+
import androidx.hilt.navigation.compose.hiltViewModel
1518
import com.foke.together.presenter.ui.theme.FourCutTogetherTheme
19+
import com.foke.together.presenter.viewmodel.HomeViewModel
1620

1721
@Composable
1822
fun HomeScreen(
1923
navigateToCamera: (String) -> Unit,
2024
navigateToSetting: (String) -> Unit,
21-
popBackStack: () -> Unit
25+
popBackStack: () -> Unit,
26+
viewModel: HomeViewModel = hiltViewModel()
2227
) {
28+
val sampleData by viewModel.getSampleText().collectAsState()
2329

2430
Column (
2531
modifier = Modifier.fillMaxWidth(),
@@ -33,6 +39,7 @@ fun HomeScreen(
3339
Button(onClick = { navigateToSetting("Setting") }){
3440
Text("Setting")
3541
}
42+
Text(text = sampleData.sampleText)
3643
}
3744
}
3845

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package com.foke.together.presenter.viewmodel
2+
3+
import androidx.lifecycle.ViewModel
4+
import androidx.lifecycle.viewModelScope
5+
import com.foke.together.domain.input.GetSampleDataInterface
6+
import com.foke.together.domain.input.SampleUiData
7+
import dagger.hilt.android.lifecycle.HiltViewModel
8+
import kotlinx.coroutines.flow.SharingStarted
9+
import kotlinx.coroutines.flow.stateIn
10+
import javax.inject.Inject
11+
12+
@HiltViewModel
13+
class HomeViewModel @Inject constructor(
14+
private val getSampleData: GetSampleDataInterface
15+
): ViewModel() {
16+
fun getSampleText() =
17+
getSampleData().stateIn(
18+
scope = viewModelScope,
19+
started = SharingStarted.WhileSubscribed(5000),
20+
initialValue = SampleUiData("")
21+
)
22+
}

0 commit comments

Comments
 (0)