<lambda>null1package com.airbnb.lottie.sample.compose.showcase 2 3 import androidx.compose.foundation.layout.Box 4 import androidx.compose.foundation.layout.fillMaxSize 5 import androidx.compose.foundation.lazy.LazyColumn 6 import androidx.compose.foundation.lazy.items 7 import androidx.compose.material.Divider 8 import androidx.compose.runtime.Composable 9 import androidx.compose.runtime.getValue 10 import androidx.compose.ui.Alignment 11 import androidx.compose.ui.Modifier 12 import androidx.compose.ui.graphics.Color 13 import androidx.compose.ui.platform.testTag 14 import androidx.compose.ui.tooling.preview.Preview 15 import androidx.navigation.NavController 16 import androidx.navigation.compose.rememberNavController 17 import com.airbnb.lottie.sample.compose.Route 18 import com.airbnb.lottie.sample.compose.composables.AnimationRow 19 import com.airbnb.lottie.sample.compose.composables.Loader 20 import com.airbnb.lottie.sample.compose.composables.Marquee 21 import com.airbnb.lottie.sample.compose.ui.LottieTheme 22 import com.airbnb.mvrx.Loading 23 import com.airbnb.mvrx.Uninitialized 24 import com.airbnb.mvrx.compose.collectAsState 25 import com.airbnb.mvrx.compose.mavericksViewModel 26 27 @Composable 28 fun ShowcasePage(navController: NavController) { 29 val viewModel: ShowcaseViewModel = mavericksViewModel() 30 val featuredAnimations by viewModel.collectAsState(ShowcaseState::animations) 31 Box( 32 modifier = Modifier.fillMaxSize() 33 ) { 34 LazyColumn { 35 item { 36 Marquee("Showcase") 37 } 38 items(featuredAnimations()?.data.orEmpty()) { data -> 39 AnimationRow( 40 title = data.title, 41 previewUrl = data.preview_url ?: "", 42 previewBackgroundColor = data.bgColor, 43 ) { 44 navController.navigate(Route.Player.forUrl(data.file, backgroundColor = data.bg_color)) 45 } 46 Divider(color = Color.LightGray) 47 } 48 } 49 if (featuredAnimations is Uninitialized || featuredAnimations is Loading) { 50 Loader(modifier = Modifier.align(Alignment.Center)) 51 } 52 } 53 } 54 55 @Preview(showBackground = true) 56 @Composable DefaultPreviewnull57fun DefaultPreview() { 58 val navController = rememberNavController() 59 LottieTheme { 60 ShowcasePage(navController) 61 } 62 } 63