/* Ċ Ġ* ĠCopyright Ġ 2 0 2 1 ĠThe ĠAndroid ĠOpen ĠSource ĠProject Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttps :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ package Ġcom . example . android dev challenge . ui . pup py Ċ Ċ import Ġandroidx . compose . foundation . layout . Box Ċ import Ġandroidx . compose . foundation . layout . Column Ċ import Ġandroidx . compose . foundation . layout . Row Ċ import Ġandroidx . compose . foundation . layout . Spacer Ċ import Ġandroidx . compose . foundation . layout . fill MaxSize Ċ import Ġandroidx . compose . foundation . layout . fill Max Width Ċ import Ġandroidx . compose . foundation . layout . height Ċ import Ġandroidx . compose . foundation . layout . padding Ċ import Ġandroidx . compose . foundation . layout . width Ċ import Ġandroidx . compose . material . Back drop Sca ffold Ċ import Ġandroidx . compose . material . Back drop Value Ċ import Ġandroidx . compose . material . Circular Progress Indicator Ċ import Ġandroidx . compose . material . Experimental Material Api Ċ import Ġandroidx . compose . material . Icon Ċ import Ġandroidx . compose . material . IconButton Ċ import Ġandroidx . compose . material . Material Theme Ċ import Ġandroidx . compose . material . Surface Ċ import Ġandroidx . compose . material . Text Ċ import Ġandroidx . compose . material . Top AppBar Ċ import Ġandroidx . compose . material . icons . Icons Ċ import Ġandroidx . compose . material . icons . filled . Arrow Back Ċ import Ġandroidx . compose . material . remember Back drop Sca ffold State Ċ import Ġandroidx . compose . runtime . Composable Ċ import Ġandroidx . compose . runtime . remember Ċ import Ġandroidx . compose . ui . Alignment Ċ import Ġandroidx . compose . ui . Modifier Ċ import Ġandroidx . compose . ui . graphics . Color Ċ import Ġandroidx . compose . ui . layout . Content Scale Ċ import Ġandroidx . compose . ui . tool ing . preview . Preview Ċ import Ġandroidx . compose . ui . unit . dp Ċ import Ġcom . example . android dev challenge . model . P up py Ċ import Ġcom . example . android dev challenge . model . P up py Repository Ċ import Ġcom . example . android dev challenge . ui . theme . My Theme Ċ import Ġdev . chr is ban es . ac comp an ist . co il . Co il Image Ċ Ċ @ Composable Ċ fun ĠApp Sca ffold ( ĊĠĠĠ Ġid : ĠInt , ĊĠĠĠ Ġon Back : Ġ() Ġ-> ĠUnit , ĊĠĠĠ Ġcontent : Ġ@ Composable Ġ( id : ĠInt , Ġon Back : Ġ() Ġ-> ĠUnit ) Ġ-> ĠUnit Ċ ) Ġ{ ĊĠĠĠ ĠMy Theme Ġ{ ĊĠĠĠĠĠĠĠ ĠSurface ( color Ġ= ĠMaterial Theme . colors . primary ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontent ( id , Ġon Back ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Composable Ċ fun ĠDetail AppBar ( on Back : Ġ() Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ ĠTop AppBar ( ĊĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . height ( 5 4 . dp ) ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ ĠIcon Button ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . align ( Alignment . Center Vert ically ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠonClick Ġ= Ġ{ Ġon Back . invoke () Ġ} ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIcon ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimage Vector Ġ= ĠIcons . Filled . Arrow Back , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Description Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠText ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġ" P up py Ġdetails ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. padding ( 1 6 . dp ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. align ( Alignment . Center Vert ically ), ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Experimental Material Api Ċ @ Composable Ċ fun ĠP up py Detail Screen ( ĊĠĠĠ Ġid : ĠInt , ĊĠĠĠ Ġon Back : Ġ() Ġ-> ĠUnit , ĊĠĠĠ Ġmodifier : ĠModifier Ġ= ĠModifier Ċ ) Ġ{ ĊĠĠĠ Ġval Ġitem Ġ= Ġremember ( id ) Ġ{ ĠP up py Repository . getP up py ( id ) Ġ} ĊĊĠĠĠ ĠBack drop Sca ffold ( ĊĠĠĠĠĠĠĠ Ġmodifier Ġ= Ġmodifier , ĊĠĠĠĠĠĠĠ Ġscaffold State Ġ= Ġremember Back drop Sca ffold State ( Back drop Value . Re ve aled ), ĊĠĠĠĠĠĠĠ Ġfront Layer S cri m Color Ġ= ĠColor . Transparent , ĊĠĠĠĠĠĠĠ Ġapp Bar Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDetail AppBar ( on Back ) ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġback Layer Content Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠP up py Image ( item . photo C ropped ) ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġfront Layer Content Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠP up py Details ( item ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ) Ċ } Ċ Ċ @ Composable Ċ fun ĠP up py Details ( item : ĠP up py ) Ġ{ ĊĠĠĠ ĠColumn ( modifier Ġ= ĠModifier . fill Max Width (). padding ( 1 6 . dp , Ġ 2 4 . dp )) Ġ{ ĊĠĠĠĠĠĠĠ ĠText ( text Ġ= Ġitem . name , Ġstyle Ġ= ĠMaterial Theme . typography . h 4 ) ĊĠĠĠĠĠĠĠ ĠSp acer ( Modifier . width ( 1 6 . dp )) ĊĠĠĠĠĠĠĠ ĠRow ( modifier Ġ= ĠModifier . fill Max Width ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠText ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġ" B reed : Ġ${ item . bre ed }", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstyle Ġ= ĠMaterial Theme . typography . body 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . weight ( 1 f ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠText ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġitem . color , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstyle Ġ= ĠMaterial Theme . typography . body 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . weight ( 1 f ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠSp acer ( Modifier . width ( 1 6 . dp )) ĊĠĠĠĠĠĠĠ ĠText ( text Ġ= Ġ" Age : Ġ${ item . age }", Ġstyle Ġ= ĠMaterial Theme . typography . h 6 ) ĊĠĠĠĠĠĠĠ ĠSp acer ( Modifier . width ( 1 6 . dp )) ĊĠĠĠĠĠĠĠ ĠText ( text Ġ= Ġ" Gender : Ġ${ item . gender }", Ġstyle Ġ= ĠMaterial Theme . typography . subtitle 2 ) ĊĠĠĠĠĠĠĠ ĠSp acer ( Modifier . width ( 1 6 . dp )) ĊĠĠĠĠĠĠĠ ĠText ( text Ġ= Ġ" Size : Ġ${ item . size }", Ġstyle Ġ= ĠMaterial Theme . typography . subtitle 2 ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Composable Ċ fun ĠP up py Image ( image : ĠString ) Ġ{ ĊĠĠĠ ĠColumn ( modifier Ġ= ĠModifier . fill Max Width (). height ( 3 0 0 . dp )) Ġ{ ĊĠĠĠĠĠĠĠ ĠCo il Image ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata Ġ= Ġimage , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" P up py Ġimage ", ĊĠĠĠĠĠĠĠĠĠĠĠ ĠModifier . fill MaxSize (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Scale Ġ= ĠContent Scale . Fill Bounds , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠfadeIn Ġ= Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġloading Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBox ( Modifier . fill MaxSize ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCircular Progress Indicator ( Modifier . align ( Alignment . Center )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Experimental Material Api Ċ @ Preview Ċ @ Composable Ċ fun ĠDetail Screen () Ġ{ ĊĠĠĠ ĠApp Sca ffold ( id Ġ= Ġ 5 0 6 5 8 9 1 0 , Ġon Back Ġ= Ġ{ Ġ}) Ġ{ Ġid , Ġback Ġ-> ĊĠĠĠĠĠĠĠ ĠP up py Detail Screen ( id , Ġback ) ĊĠĠĠ Ġ} Ċ } Ċ