Skip to content

Commit

Permalink
调整对比页
Browse files Browse the repository at this point in the history
  • Loading branch information
devenv1390 committed Feb 23, 2023
1 parent bf66cfd commit 8e2d6a8
Show file tree
Hide file tree
Showing 16 changed files with 246 additions and 182 deletions.
19 changes: 14 additions & 5 deletions app/src/main/java/com/example/kkneed/data/ItemData.kt
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ package com.example.kkneed.data

import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.painter.Painter
import androidx.compose.ui.graphics.vector.ImageVector

data class GuideScreenItemData (//引导页的item数据类
val image: Int,
Expand All @@ -12,8 +11,18 @@ data class GuideScreenItemData (//引导页的item数据类
data class ButtonItemData(
val icon: Painter,
val title: String,
val route: String
val route: String,
)
data class DetailItemData(val route: String,val title: String, val color: Color){

}
data class DetailItemData(
val title: String,
val color: Color,
)
data class LevelItem(
var gradeImage:Int,
var matchText:String,
var matchColor: Color,
)
data class ProductValue(
val left:Double,
val right:Double,
)
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.example.kkneed.viewmodel
package com.example.kkneed.data

import androidx.camera.view.PreviewView
import com.example.kkneed.model.Scan
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
package com.example.kkneed.data.fake

import com.example.kkneed.R
import com.example.kkneed.data.LevelItem
import com.example.kkneed.model.*
import com.example.kkneed.ui.theme.LevelA

val fakeScan = Scan(
displayValue = "123",
Expand Down Expand Up @@ -30,27 +32,11 @@ val fakeProduct = Product(

val fakeNutrientLevels = NutrientLevels("", "", "", "")

//val fakeNutrimentsOld = Nutriments(
// 0.0,0.0,0.0,"",0.0,0.0,0.0,0.0,
// "",0.0,0.0,0.0,0.0,"",0.0,
// 0.0,0.0,0.0,0.0,0.0,"",0.0,0.0,
// 0.0,"",0.0,0.0,0.0,0.0,"",0.0,0.0,0.0,0.0,
// "",0.0,0.0,0.0,0.0,
// 0.0,0.0,0.0,0.0,"",0.0,0.0,0.0,0.0,"",
// 0.0,0.0,0.0,0.0,"",0.0,0.0,0.0,
// 0.0,"",0.0,0.0,0.0,0.0,"",0.0,
// )
//val fakeNutriments = Nutriments(
// 0.0,0.0,0.0,"",0.0,0.0,0.0,0.0,
// 0.0,0.0,"",0.0,0.0,0.0,"",
// 0.0,0.0,0.0,0.0,"",0.0,0.0,0.0,
// 0.0,"",0.0,0.0,0.0,0.0,"",0.0,0.0,0.0,0.0,
// "",0.0,0.0,0.0,0.0,
// "",0.0,
//)
val fakeNutriments = Nutriments(
0.0,"",0.0,"",0.0,"",0.0,"",
0.0,"",0.0,"",0.0,0.0,0.0,
"",0.0,"",0.0,"",0.0,"",0.0,
"",
)

val fakeLevel = LevelItem(R.drawable.alevel,"", LevelA)
51 changes: 51 additions & 0 deletions app/src/main/java/com/example/kkneed/data/productCal.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
package com.example.kkneed.data

import androidx.compose.runtime.Composable
import com.example.kkneed.R
import com.example.kkneed.data.fake.fakeLevel
import com.example.kkneed.ui.theme.*

@Composable
fun findLevel(score: String): LevelItem {
val matchLevel: LevelItem = fakeLevel
when (score) {
"a" -> {
matchLevel.gradeImage = R.drawable.alevel
matchLevel.matchText = "健康匹配度高"
matchLevel.matchColor = LevelA
}

"b" -> {
matchLevel.gradeImage = R.drawable.blevel
matchLevel.matchText = "健康匹配度较高"
matchLevel.matchColor = LevelB
}

"c" -> {
matchLevel.gradeImage = R.drawable.clevel
matchLevel.matchText = "健康匹配度一般"
matchLevel.matchColor = LevelC
}

"d" -> {
matchLevel.gradeImage = R.drawable.dlevel
matchLevel.matchText = "健康匹配度较低"
matchLevel.matchColor = LevelD
}

"e" -> {
matchLevel.gradeImage = R.drawable.elevel
matchLevel.matchText = "健康匹配度低"
matchLevel.matchColor = LevelE
}
}
return matchLevel
}

@Composable
fun productCalculator(productLeft: Double, productRight: Double): ProductValue {
val total = productLeft + productRight
val left = productLeft / total
val right = productRight / total
return ProductValue(left, right)
}
28 changes: 14 additions & 14 deletions app/src/main/java/com/example/kkneed/navigation/AllScreen.kt
Original file line number Diff line number Diff line change
Expand Up @@ -21,38 +21,38 @@ sealed class AllScreen(val route: String){
object Watch:AllScreen("watch_screen")
object Fan:AllScreen("fan_screen")
object SignUp:AllScreen("signup_screen")
object SignIn:AllScreen("signin_screen")
object SignInfo:AllScreen("signinfo_screen")
object SignIn:AllScreen("signIn_screen")
object SignInfo:AllScreen("signInfo_screen")
object Label:AllScreen("label_screen")
object Success:AllScreen("success_screen")
object Chip:AllScreen("chip_screen")
object PersonInfo:AllScreen("personinfo_screen")
object PersonInfo:AllScreen("personInfo_screen")
object Scanner:AllScreen("scanner_screen")
object Comment:AllScreen("comment_screen")
object Detail:AllScreen("detail_screen")
object Customize:AllScreen("customize_screen")
object Compare:AllScreen("compare_screen")
object Chose:AllScreen("chose_screen")
object ScanHistory:AllScreen("scanhistory_screen")
object ScanHistory:AllScreen("scanHistory_screen")
object Edit:AllScreen("edit_screen")
object EditProduct:AllScreen("editproduct_screen")
object EditProduct:AllScreen("editProduct_screen")
object Collect:AllScreen("collect_screen")
object RecordDetail:AllScreen("recorddetail_screen")
object RecordDetail:AllScreen("recordDetail_screen")
object Search:AllScreen("search_screen")
object SearchResult:AllScreen("searchresult_screen")
object SearchResult:AllScreen("searchResult_screen")
object Community:AllScreen("community_screen")
object EditNote:AllScreen("editnote_screen")
object NoteDetail:AllScreen("notedetail_screen")
object SearchCommunity:AllScreen("searchcommunity_screen")
object EditNote:AllScreen("editNote_screen")
object NoteDetail:AllScreen("noteDetail_screen")
object SearchCommunity:AllScreen("searchCommunity_screen")
object Create:AllScreen("create_screen")
object Health:AllScreen("health_screen")
object Service:AllScreen("service_screen")
object ShopDetail:AllScreen("shopdetail_screen")
object ShopDetail:AllScreen("shopDetail_screen")
object ScanResult:AllScreen(ScannerDirection.route)
object Result:AllScreen("result_screen")
object ADList:AllScreen("adlist_screen")
object ADList:AllScreen("adList_screen")
object Confirm:AllScreen("confirm_screen")
object Day:AllScreen("dayscreen_screen")
object ShoppingCart:AllScreen("shoppingcart_screen")
object ADEdit:AllScreen("adedit_screen")
object ShoppingCart:AllScreen("shoppingCart_screen")
object ADEdit:AllScreen("adEdit_screen")
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ fun NavGraphBuilder.SearchNavGraph(navController: NavController) {
composable(AllScreen.Scanner.route) {
BCScannerScreen(navController)
}
composable(AllScreen.ScanResult.route,) {
composable(AllScreen.ScanResult.route) {
ScanResultScreen(navController)
}
composable(AllScreen.Comment.route) {
Expand All @@ -23,8 +23,17 @@ fun NavGraphBuilder.SearchNavGraph(navController: NavController) {
composable(AllScreen.Detail.route) {
DetailScreen(navController)
}
composable(AllScreen.Compare.route) {
CompareScreen(navController)
composable(
AllScreen.Compare.route+"/{code}",
arguments = listOf(
navArgument("code"){
type = NavType.StringType
defaultValue = ""
}
)
) {
val code = it.arguments?.getString("code") ?:""
CompareScreen(navController,code)
}
composable(AllScreen.ScanHistory.route) {
ScanHistoryScreen(navController)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ import com.example.kkneed.ui.theme.Black200
import com.example.kkneed.ui.theme.Black700
import com.example.kkneed.ui.theme.BottomSheetShape
import com.example.kkneed.viewmodel.ProductViewModel
import com.example.kkneed.viewmodel.ScannerUiState
import com.example.kkneed.data.ScannerUiState
import com.example.kkneed.viewmodel.ScannerViewModel
import kotlinx.coroutines.launch

Expand Down
71 changes: 44 additions & 27 deletions app/src/main/java/com/example/kkneed/screen/search/CompareScreen.kt
Original file line number Diff line number Diff line change
@@ -1,62 +1,79 @@
package com.example.kkneed.screen.search

import android.annotation.SuppressLint
import androidx.compose.foundation.Image
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.material.*
import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.Icon
import androidx.compose.material3.IconButton
import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.Composable
import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.layout.ContentScale
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import androidx.hilt.navigation.compose.hiltViewModel
import androidx.navigation.NavController
import androidx.navigation.compose.rememberNavController
import com.example.kkneed.R
import com.example.kkneed.screen.shop.SearchScreen
import com.example.kkneed.ui.*
import com.example.kkneed.ui.theme.KKNeedTheme
import com.example.kkneed.viewmodel.ProductViewModel

@OptIn(ExperimentalMaterialApi::class, ExperimentalMaterial3Api::class)
@SuppressLint("UnusedMaterialScaffoldPaddingParameter")
@Composable
fun CompareScreen(navController: NavController) {
fun CompareScreen(navController: NavController, barcode: String, viewModel: ProductViewModel = hiltViewModel()) {
val productLeft = viewModel.queryProduct(barcode)
// Log.d("m",productLeft.nutriments.energyKj100g!!.toFloat().toString())
val productRight = viewModel.nowProduct.value
Scaffold(
topBar = {
MostUseTopAppBar(appBarHeight = 64.dp, navController =navController, "产品对比") })
MostUseTopAppBar(appBarHeight = 64.dp, navController = navController, "产品对比")
})
{
Column(modifier = Modifier.fillMaxWidth(),
LazyColumn(
modifier = Modifier.fillMaxWidth(),
horizontalAlignment = Alignment.CenterHorizontally,
verticalArrangement = Arrangement.spacedBy(12.dp)) {
Row(modifier = Modifier
.fillMaxWidth()
.padding(start = 16.dp, end = 16.dp),
horizontalArrangement = Arrangement.SpaceBetween){
CompareCard("百事可乐")
CompareCard("农夫山泉东方树叶红茶500ml")
verticalArrangement = Arrangement.spacedBy(12.dp)
) {
item {
Column {
Row(
modifier = Modifier
.fillMaxWidth()
.padding(start = 16.dp, end = 16.dp),
horizontalArrangement = Arrangement.SpaceBetween
) {
CompareCard(
navController,
productLeft.productName,
productLeft.imageUrl,
productLeft.scoreGrade,
)
CompareCard(
navController,
productRight?.productName ?: productLeft.productName,
productRight?.productName ?: productLeft.imageUrl,
productRight?.productName ?: productLeft.scoreGrade,
)
}
Spacer(modifier = Modifier.size(12.dp))
NutriCompareCard(productLeft, productRight ?: productLeft)
Spacer(modifier = Modifier.size(12.dp))
ComponentCompareCard(productLeft,productRight ?: productLeft)
}
}
item {
Spacer(modifier = Modifier.size(40.dp))
}
NutriCompareCard()
ComponentCompareCard()
}


}
}

}
@Preview
@Composable
fun PreviewCompareScreen() {
KKNeedTheme {
val navController = rememberNavController()
CompareScreen(navController)
// CompareScreen(navController)
}
}

28 changes: 14 additions & 14 deletions app/src/main/java/com/example/kkneed/screen/search/DetailScreen.kt
Original file line number Diff line number Diff line change
Expand Up @@ -16,30 +16,32 @@ import androidx.navigation.compose.rememberNavController
import com.example.kkneed.ui.DetailCard
import com.example.kkneed.ui.DetailList
import com.example.kkneed.ui.MostUseTopAppBar
import com.example.kkneed.ui.VantageList
import com.example.kkneed.ui.components.ChipGroupCompose
import com.example.kkneed.ui.theme.KKNeedTheme
import com.example.kkneed.ui.theme.LevelE
import com.google.accompanist.pager.ExperimentalPagerApi
import com.google.accompanist.pager.rememberPagerState

@OptIn(ExperimentalPagerApi::class)
@SuppressLint("UnusedMaterialScaffoldPaddingParameter")
@Composable
fun DetailScreen(navController: NavController) {
Scaffold(
topBar = {
MostUseTopAppBar(appBarHeight = 64.dp, navController =navController, "详情") })
MostUseTopAppBar(appBarHeight = 64.dp, navController = navController, "详情")
})
{
Column(modifier = Modifier.fillMaxSize(),
Column(
modifier = Modifier.fillMaxSize(),
horizontalAlignment = Alignment.CenterHorizontally,
verticalArrangement = Arrangement.spacedBy(12.dp)){
verticalArrangement = Arrangement.spacedBy(12.dp)
) {
DetailList(title = "卡路里值偏高 10.6%", LevelE)
DetailCard("康康小贴士","过高的摄入脂肪(尤其是饱和脂肪),会导致胆固醇升高,从而增加患心脏病的风险。")
DetailCard("康康有话说","购买产品时要选择低脂肪以及低饱和脂肪的产品,从而保护身体健康喔~")
Row(modifier = Modifier.fillMaxWidth()
.padding(start = 16.dp),
horizontalArrangement = Arrangement.Start) {
DetailCard("康康小贴士", "过高的摄入脂肪(尤其是饱和脂肪),会导致胆固醇升高,从而增加患心脏病的风险。")
DetailCard("康康有话说", "购买产品时要选择低脂肪以及低饱和脂肪的产品,从而保护身体健康喔~")
Row(
modifier = Modifier.fillMaxWidth()
.padding(start = 16.dp),
horizontalArrangement = Arrangement.Start
) {
TextButton(onClick = { /*TODO*/ }) {
Text(
"点击链接查看更多脂肪科普小知识",
Expand All @@ -48,11 +50,9 @@ fun DetailScreen(navController: NavController) {
)
}
}
}
}


}
}

@Preview
@Composable
Expand Down
Loading

0 comments on commit 8e2d6a8

Please sign in to comment.