4.20 | 冲刺day2

今天做吃药提醒的模块

逛了逛各大平台,腾讯的ai,百度智能云的ai,都不能满足我想要的ai对话的要求,仔细想了想,这个功能似乎也不怎么实用,没有必要存在,现在的人工智能还是太傻了,不适合给老年人使用

 

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

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

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

    // 发送数据请求
    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("addMedicine")},
                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<Medicine>
) {
    LazyColumn(modifier = modifier.padding(vertical = 4.dp)) {
        items(items = datas) { name ->
            Greeting(data = name)
        }
    }
}

@Composable
private fun Greeting(data: Medicine, 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: Medicine) {
    var expanded by rememberSaveable { mutableStateOf(false) }

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


            Surface (
                shape = MaterialTheme.shapes.medium,
                color = MaterialTheme.colorScheme.surfaceVariant,
                modifier = Modifier
            ){
                Row (
                    verticalAlignment = Alignment.CenterVertically,
                    modifier = Modifier.width(400.dp)
                ){
                    Image(
                        painter = BitmapPainter(convertBase64ToBitmap(data.imageUri)?.asImageBitmap()!!) ,
                        contentDescription =null ,
                        contentScale = ContentScale.Crop,
                        modifier = Modifier.size(160.dp)
                    )
                    Text(
                        text = "每日${data.time}次  每次${data.mount}片(粒)",
                        style = MaterialTheme.typography.titleMedium,
                        modifier= Modifier.padding(horizontal = 16.dp)
                    )
                }
            }
//            Text(
//                text = "${data.time}  日期:${data.mount}  时间:${data.startTime}", style = MaterialTheme.typography.headlineMedium.copy(
//                    fontWeight = FontWeight.ExtraBold
//                )
//            )
//            if (expanded) {
//                Text(
//                    text = "具体内容:  ${data.imageUri} "
//                )
//            }
        }
        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)
                }
            )
        }
    }
}

fun convertBase64ToBitmap(base64String: String?): Bitmap? {
    // 解码Base64字符串为字节数组
    val decodedString: ByteArray = Base64.decode(base64String, Base64.DEFAULT)
    // 将字节数组转换为Bitmap
    return BitmapFactory.decodeByteArray(decodedString, 0, decodedString.size)
}

  

posted on 2024-04-20 22:57  Daniel350  阅读(18)  评论(0)    收藏  举报