sample/src/commonMain/kotlin/CustomViewer.kt
changeset 99 d2a4e0ffd8e9
parent 47 246422783c0c
equal deleted inserted replaced
98:3dc5efd1855d 99:d2a4e0ffd8e9
    28 import androidx.compose.material3.*
    28 import androidx.compose.material3.*
    29 import androidx.compose.runtime.*
    29 import androidx.compose.runtime.*
    30 import androidx.compose.ui.Alignment
    30 import androidx.compose.ui.Alignment
    31 import androidx.compose.ui.Modifier
    31 import androidx.compose.ui.Modifier
    32 import androidx.compose.ui.unit.dp
    32 import androidx.compose.ui.unit.dp
       
    33 import androidx.lifecycle.compose.collectAsStateWithLifecycle
    33 import androidx.lifecycle.viewmodel.compose.viewModel
    34 import androidx.lifecycle.viewmodel.compose.viewModel
    34 import com.geekorum.aboutoss.ui.common.OpenSourceLicensesViewModel
    35 import com.geekorum.aboutoss.ui.common.OpenSourceLicensesViewModel
    35 
    36 
    36 @Composable
    37 @Composable
    37 fun CustomViewer(
    38 fun CustomViewer(
    51 @Composable
    52 @Composable
    52 private fun DependenciesGrid(
    53 private fun DependenciesGrid(
    53     viewModel: OpenSourceLicensesViewModel,
    54     viewModel: OpenSourceLicensesViewModel,
    54     modifier: Modifier = Modifier
    55     modifier: Modifier = Modifier
    55 ) {
    56 ) {
    56     val dependencies by viewModel.dependenciesList.collectAsState(initial = emptyList())
    57     val dependencies by viewModel.dependenciesList.collectAsStateWithLifecycle(emptyList())
    57     var selected by remember { mutableStateOf(-1) }
    58     var selected by remember { mutableStateOf(-1) }
    58     LazyVerticalGrid(
    59     LazyVerticalGrid(
    59         GridCells.Adaptive(150.dp),
    60         GridCells.Adaptive(150.dp),
    60         horizontalArrangement = Arrangement.spacedBy(16.dp),
    61         horizontalArrangement = Arrangement.spacedBy(16.dp),
    61         verticalArrangement = Arrangement.spacedBy(16.dp),
    62         verticalArrangement = Arrangement.spacedBy(16.dp),
    62         modifier = modifier
    63         modifier = modifier
    63     ) {
    64     ) {
    64         itemsIndexed(dependencies) { idx, dependency ->
    65         itemsIndexed(dependencies) { idx, dependency ->
    65             if (idx == selected) {
    66             if (idx == selected) {
    66                 val license by viewModel.getLicenseDependency(dependency)
    67                 val license by viewModel.getLicenseDependency(dependency)
    67                     .collectAsState(initial = "")
    68                     .collectAsStateWithLifecycle("")
    68                 LicenseCard(license, onClick = {
    69                 LicenseCard(license, onClick = {
    69                     selected = -1
    70                     selected = -1
    70                 })
    71                 })
    71             } else {
    72             } else {
    72                 DependencyCard(dependency, onClick = {
    73                 DependencyCard(dependency, onClick = {