1
- package co.touchlab.kampkit.android. ui
1
+ package co.touchlab.kampkit.ui
2
2
3
3
import androidx.compose.animation.Crossfade
4
4
import androidx.compose.animation.core.FastOutSlowInEasing
@@ -20,33 +20,34 @@ import androidx.compose.material.ExperimentalMaterialApi
20
20
import androidx.compose.material.MaterialTheme
21
21
import androidx.compose.material.Surface
22
22
import androidx.compose.material.Text
23
+ import androidx.compose.material.icons.Icons
24
+ import androidx.compose.material.icons.filled.Favorite
25
+ import androidx.compose.material.icons.filled.FavoriteBorder
23
26
import androidx.compose.material.pullrefresh.PullRefreshIndicator
24
27
import androidx.compose.material.pullrefresh.pullRefresh
25
28
import androidx.compose.material.pullrefresh.rememberPullRefreshState
26
29
import androidx.compose.runtime.Composable
27
30
import androidx.compose.runtime.LaunchedEffect
31
+ import androidx.compose.runtime.collectAsState
28
32
import androidx.compose.runtime.getValue
29
33
import androidx.compose.runtime.rememberCoroutineScope
30
34
import androidx.compose.ui.Alignment
31
35
import androidx.compose.ui.Modifier
32
- import androidx.compose.ui.res.painterResource
33
- import androidx.compose.ui.res.stringResource
34
- import androidx.compose.ui.tooling.preview.Preview
35
36
import androidx.compose.ui.unit.dp
36
- import androidx.lifecycle.compose.collectAsStateWithLifecycle
37
- import co.touchlab.kampkit.android.R
37
+ import co.touchlab.kampkit.MR
38
38
import co.touchlab.kampkit.db.Breed
39
39
import co.touchlab.kampkit.models.BreedViewModel
40
40
import co.touchlab.kampkit.models.BreedViewState
41
41
import co.touchlab.kermit.Logger
42
+ import dev.icerock.moko.resources.compose.stringResource
42
43
import kotlinx.coroutines.launch
43
44
44
45
@Composable
45
46
fun MainScreen (
46
47
viewModel : BreedViewModel ,
47
48
log : Logger
48
49
) {
49
- val dogsState by viewModel.breedState.collectAsStateWithLifecycle ()
50
+ val dogsState by viewModel.breedState.collectAsState ()
50
51
val scope = rememberCoroutineScope()
51
52
52
53
MainScreenContent (
@@ -106,7 +107,7 @@ fun Empty() {
106
107
verticalArrangement = Arrangement .Center ,
107
108
horizontalAlignment = Alignment .CenterHorizontally
108
109
) {
109
- Text (stringResource(R .string .empty_breeds))
110
+ Text (text = stringResource(MR .strings .empty_breeds))
110
111
}
111
112
}
112
113
@@ -166,27 +167,14 @@ fun FavoriteIcon(breed: Breed) {
166
167
) { fav ->
167
168
if (fav) {
168
169
Image (
169
- painter = painterResource(id = R .drawable.ic_favorite_border_24px) ,
170
- contentDescription = stringResource(R .string .favorite_breed, breed.name)
170
+ imageVector = Icons . Default . FavoriteBorder ,
171
+ contentDescription = stringResource(MR .strings .favorite_breed, breed.name)
171
172
)
172
173
} else {
173
174
Image (
174
- painter = painterResource(id = R .drawable.ic_favorite_24px) ,
175
- contentDescription = stringResource(R .string .unfavorite_breed, breed.name)
175
+ imageVector = Icons . Default . Favorite ,
176
+ contentDescription = stringResource(MR .strings .unfavorite_breed, breed.name)
176
177
)
177
178
}
178
179
}
179
180
}
180
-
181
- @Preview
182
- @Composable
183
- fun MainScreenContentPreview_Success () {
184
- MainScreenContent (
185
- dogsState = BreedViewState (
186
- breeds = listOf (
187
- Breed (0 , " appenzeller" , false ),
188
- Breed (1 , " australian" , true )
189
- )
190
- )
191
- )
192
- }
0 commit comments