4.26 | 冲刺day8

开发社区页,显示社区的活动具体信息

suspend fun fetchData(): List<Data> {
    return withContext(Dispatchers.IO) {
        val service = ServiceCreator.create(ActService::class.java)
        val response = service.get().execute()
        if (response.isSuccessful) {
            response.body() ?: emptyList()
        } else {
            emptyList()
        }
    }
}

@Composable
fun SocialScreen(modifier: Modifier = Modifier, navController: NavController) {

    val socialData = remember { mutableStateOf(emptyList<Data>()) }

    // 发送数据请求
    LaunchedEffect(Unit) {
        // 发送网络请求或从其他地方获取数据
        val newData = fetchData()
        socialData.value = newData
        Log.e("TAG", "SocialScreen: ${socialData.value}", )
    }

    // 当 socialData 更新时,UI 将自动更新
    Surface(modifier, color = MaterialTheme.colorScheme.background) {
        Box(modifier = Modifier.fillMaxSize()) {
            Greetings(datas = socialData.value)
            FloatingActionButton(
                onClick = { navController.navigate("adda")},
                shape = CircleShape,
                contentColor = Color.White,
                modifier = Modifier
                    .padding(16.dp)
                    .align(Alignment.BottomEnd) // 右下角对齐
            ) {
                Icon(
                    imageVector = Icons.Default.Add,
                    contentDescription = "Add",
                    tint = Color.White
                )
            }
        }
    }
}

@Composable
fun OnboardingScreen(
    onContinueClicked: () -> Unit,
    modifier: Modifier = Modifier
) {
    Column(
        modifier = modifier.fillMaxSize(),
        verticalArrangement = Arrangement.Center,
        horizontalAlignment = Alignment.CenterHorizontally
    ) {
        Text("Welcome to the Basics Codelab!")
        Button(
            modifier = Modifier.padding(vertical = 24.dp),
            onClick = onContinueClicked
        ) {
            Text("Continue")
        }
    }
}

@Composable
private fun Greetings(
    modifier: Modifier = Modifier,
    datas: List<Data>
) {
    Text(text = "活动列表:",
        modifier=Modifier.padding(30.dp))
    LazyColumn(modifier = modifier.padding(vertical = 4.dp)) {


        items(items = datas) { name ->
            Greeting(data = name)
        }
    }
}

@Composable
private fun Greeting(data: Data, modifier: Modifier = Modifier) {
    Card(
        colors = CardDefaults.cardColors(
            containerColor = MaterialTheme.colorScheme.primary
        ),
        modifier = modifier.padding(vertical = 4.dp, horizontal = 8.dp)
    ) {
        CardContent(data)
    }
}

@Composable
private fun CardContent(data: Data) {
    var expanded by rememberSaveable { mutableStateOf(true) }

    Row(
        modifier = Modifier
            .padding(12.dp)
            .animateContentSize(
                animationSpec = spring(
                    dampingRatio = Spring.DampingRatioMediumBouncy,
                    stiffness = Spring.StiffnessLow
                )
            )
    ) {
        Column(
            modifier = Modifier
                .weight(1f)
                .padding(12.dp)
        ) {

            Text(
                text = "${data.name}  日期:${data.date}  时间:${data.time}", style = MaterialTheme.typography.headlineMedium.copy(
                    fontWeight = FontWeight.ExtraBold
                )
            )
            if (expanded) {
                Text(
                    text = "具体内容:  ${data.text}  \n发起人:${data.person} 参与人数:${data.limitNumber}"
                )
            }
        }
        IconButton(onClick = { expanded = !expanded }) {
            Icon(
                imageVector = if (expanded) Icons.Filled.ExpandLess else Icons.Filled.ExpandMore,
                contentDescription = if (expanded) {
                    stringResource(R.string.show_less)
                } else {
                    stringResource(R.string.show_more)
                }
            )
        }
    }
}

 

posted on 2024-04-26 21:30  Daniel350  阅读(17)  评论(0)    收藏  举报