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)
}
浙公网安备 33010602011771号