ProductDetailsScreen
OK
This commit is contained in:
parent
1a1713f00f
commit
2bb00741f4
@ -0,0 +1,28 @@
|
|||||||
|
package com.juceliodev.fooddeliverymyapplication.data
|
||||||
|
|
||||||
|
import androidx.annotation.DrawableRes
|
||||||
|
import com.juceliodev.fooddeliverymyapplication.R
|
||||||
|
|
||||||
|
data class ProductFlavorState(
|
||||||
|
val name: String,
|
||||||
|
val price: String,
|
||||||
|
@DrawableRes val imgRes: Int
|
||||||
|
)
|
||||||
|
|
||||||
|
val ProductFlavorsData = listOf(
|
||||||
|
ProductFlavorState(
|
||||||
|
imgRes = R.drawable.img_cheese,
|
||||||
|
name = "Chedder",
|
||||||
|
price = "$0.79"
|
||||||
|
),
|
||||||
|
ProductFlavorState(
|
||||||
|
imgRes = R.drawable.img_bacon,
|
||||||
|
name = "Bacon",
|
||||||
|
price = "$0.52"
|
||||||
|
),
|
||||||
|
ProductFlavorState(
|
||||||
|
imgRes = R.drawable.img_onion,
|
||||||
|
name = "Onion",
|
||||||
|
price = "$0.28"
|
||||||
|
)
|
||||||
|
)
|
@ -0,0 +1,109 @@
|
|||||||
|
package com.juceliodev.fooddeliverymyapplication.ui.screen
|
||||||
|
|
||||||
|
import androidx.compose.foundation.layout.Box
|
||||||
|
import androidx.compose.foundation.layout.Column
|
||||||
|
import androidx.compose.foundation.layout.Spacer
|
||||||
|
import androidx.compose.foundation.layout.fillMaxSize
|
||||||
|
import androidx.compose.foundation.layout.height
|
||||||
|
import androidx.compose.foundation.layout.navigationBarsPadding
|
||||||
|
import androidx.compose.foundation.layout.padding
|
||||||
|
import androidx.compose.foundation.rememberScrollState
|
||||||
|
import androidx.compose.foundation.verticalScroll
|
||||||
|
import androidx.compose.runtime.Composable
|
||||||
|
import androidx.compose.ui.Alignment
|
||||||
|
import androidx.compose.ui.Modifier
|
||||||
|
import androidx.compose.ui.unit.dp
|
||||||
|
import com.juceliodev.fooddeliverymyapplication.ui.screen.components.OrderActionBar
|
||||||
|
import com.juceliodev.fooddeliverymyapplication.data.OrderData
|
||||||
|
import com.juceliodev.fooddeliverymyapplication.data.OrderState
|
||||||
|
import com.juceliodev.fooddeliverymyapplication.data.ProductDescriptionData
|
||||||
|
import com.juceliodev.fooddeliverymyapplication.data.ProductFlavorState
|
||||||
|
import com.juceliodev.fooddeliverymyapplication.data.ProductFlavorsData
|
||||||
|
import com.juceliodev.fooddeliverymyapplication.data.ProductNutritionData
|
||||||
|
import com.juceliodev.fooddeliverymyapplication.data.ProductNutritionState
|
||||||
|
import com.juceliodev.fooddeliverymyapplication.data.ProductPreviewState
|
||||||
|
import com.juceliodev.fooddeliverymyapplication.ui.screen.components.FlavorSection
|
||||||
|
import com.juceliodev.fooddeliverymyapplication.ui.screen.components.ProductDescriptionSection
|
||||||
|
import com.juceliodev.fooddeliverymyapplication.ui.screen.components.ProductNutritionSection
|
||||||
|
import com.juceliodev.fooddeliverymyapplication.ui.screen.components.ProductPreviewSection
|
||||||
|
|
||||||
|
|
||||||
|
@Composable
|
||||||
|
fun ProductDetailsScreen(
|
||||||
|
modifier: Modifier = Modifier,
|
||||||
|
productPreviewState: ProductPreviewState = ProductPreviewState(),
|
||||||
|
productFlavors: List<ProductFlavorState> = ProductFlavorsData,
|
||||||
|
productNutritionState: ProductNutritionState = ProductNutritionData,
|
||||||
|
productDescription: String = ProductDescriptionData,
|
||||||
|
orderState: OrderState = OrderData,
|
||||||
|
onAddItemClicked: () -> Unit = {},
|
||||||
|
onRemoveItemClicked: () -> Unit = {},
|
||||||
|
onCheckOutClicked: () -> Unit = {}
|
||||||
|
) {
|
||||||
|
Box(
|
||||||
|
modifier = modifier.fillMaxSize(),
|
||||||
|
contentAlignment = Alignment.BottomCenter
|
||||||
|
) {
|
||||||
|
Content(
|
||||||
|
productDescription = productDescription,
|
||||||
|
productFlavors = productFlavors,
|
||||||
|
productNutritionState = productNutritionState,
|
||||||
|
productPreviewState = productPreviewState,
|
||||||
|
)
|
||||||
|
OrderActionBar(
|
||||||
|
state = orderState,
|
||||||
|
onAddItemClicked = onAddItemClicked,
|
||||||
|
onRemoveItemClicked = onRemoveItemClicked,
|
||||||
|
onCheckOutClicked = onCheckOutClicked,
|
||||||
|
modifier = Modifier
|
||||||
|
.navigationBarsPadding()
|
||||||
|
.padding(
|
||||||
|
horizontal = 18.dp,
|
||||||
|
vertical = 8.dp
|
||||||
|
)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Composable
|
||||||
|
private fun Content(
|
||||||
|
modifier: Modifier = Modifier,
|
||||||
|
productPreviewState: ProductPreviewState,
|
||||||
|
productFlavors: List<ProductFlavorState>,
|
||||||
|
productNutritionState: ProductNutritionState,
|
||||||
|
productDescription: String
|
||||||
|
) {
|
||||||
|
val scrollState = rememberScrollState()
|
||||||
|
|
||||||
|
Column(
|
||||||
|
modifier = modifier.verticalScroll(scrollState)
|
||||||
|
) {
|
||||||
|
ProductPreviewSection(
|
||||||
|
state = productPreviewState
|
||||||
|
)
|
||||||
|
Spacer(
|
||||||
|
modifier = Modifier.height(16.dp)
|
||||||
|
)
|
||||||
|
FlavorSection(
|
||||||
|
data = productFlavors,
|
||||||
|
modifier = Modifier.padding(horizontal = 18.dp)
|
||||||
|
)
|
||||||
|
Spacer(
|
||||||
|
modifier = Modifier.height(16.dp)
|
||||||
|
)
|
||||||
|
ProductNutritionSection(
|
||||||
|
state = productNutritionState,
|
||||||
|
modifier = Modifier.padding(horizontal = 18.dp)
|
||||||
|
)
|
||||||
|
Spacer(
|
||||||
|
modifier = Modifier.height(32.dp)
|
||||||
|
)
|
||||||
|
ProductDescriptionSection(
|
||||||
|
productDescription = productDescription,
|
||||||
|
modifier = Modifier
|
||||||
|
.navigationBarsPadding()
|
||||||
|
.padding(horizontal = 18.dp)
|
||||||
|
.padding(bottom = 128.dp)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user