/* Ċ Ġ* ĠCopyright Ġ 2 0 2 2 ĠV ital iy ĠZ ar ub in Ċ Ġ* Ċ Ġ* Ġ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 Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttp :// 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 . key gen qt . viewer . android . compose . base Ċ Ċ import Ġandroidx . compose . foundation . layout . Box Ċ import Ġandroidx . compose . foundation . layout . Row Scope Ċ import Ġandroidx . compose . foundation . layout . fill MaxSize Ċ import Ġandroidx . compose . foundation . layout . padding Ċ import Ġandroidx . compose . material 3 . Experimental Material 3 Api Ċ import Ġandroidx . compose . material 3 . Sca ffold Ċ import Ġandroidx . compose . material 3 . Top AppBar Defaults . enter Always Scroll Behavior Ċ import Ġandroidx . compose . runtime .* Ċ import Ġandroidx . compose . ui . Modifier Ċ import Ġandroidx . navigation . Nav Destination Ċ import Ġcom . google . ac comp an ist . in sets . navigation Bar sWith I me Padding Ċ import Ġcom . google . ac comp an ist . in sets . status Bars Padding Ċ import Ġcom . google . ac comp an ist . swiper ef resh . Swipe Refresh Ċ import Ġcom . google . ac comp an ist . swiper ef resh . remember Swipe Refresh State Ċ import Ġcom . key gen qt . routing . Navigation Dispatcher Ċ import Ġcom . key gen qt . viewer . android . compose . overload . App Swipe Refresh Indicator Ċ import Ġcom . key gen qt . viewer . android . extensions . Animated Nav Graph State Ċ import Ġcom . key gen qt . viewer . android . extensions . La unched Effect Animation Ċ import Ġcom . key gen qt . viewer . android . menu . Menu Bottom Bar Ċ Ċ /** Ċ Ġ* ĠMain Ġscaffold Ġfor Ġapp Ċ Ġ*/ Ċ @ Opt In ( Experimental Material 3 Api :: class ) Ċ @ Composable Ċ fun ĠApp Sca ffold ( ĊĠĠĠ Ġnavigation Dispatcher : ĠNavigation Dispatcher ?, ĊĠĠĠ Ġ// Ġtop Ġbar ĊĠĠĠ Ġtop Bar Title : ĠString ? Ġ= Ġnull , ĊĠĠĠ Ġtop Bar Loading : ĠBoolean Ġ= Ġfalse , ĊĠĠĠ Ġtop Bar Actions : Ġ@ Composable Ġ(( Row Scope ) Ġ-> ĠUnit )? Ġ= Ġnull , ĊĠĠĠ Ġ// Ġswipe Ġrefresh ĊĠĠĠ Ġswipe Refresh Enable : ĠBoolean Ġ= Ġfalse , ĊĠĠĠ Ġswipe Refresh Loading : ĠBoolean Ġ= Ġfalse , ĊĠĠĠ Ġswipe Refresh Action : Ġ() Ġ-> ĠUnit Ġ= Ġ{}, ĊĠĠĠ Ġ// Ġcontent ĊĠĠĠ Ġcontent : Ġ@ Composable Ġ() Ġ-> ĠUnit Ċ ) Ġ= ĠApp Sca ffold ( ĊĠĠĠ Ġback Data Ġ= Ġnull , ĊĠĠĠ Ġnavigation Dispatcher Ġ= Ġnavigation Dispatcher , ĊĠĠĠ Ġtop Bar Title Ġ= Ġtop Bar Title , ĊĠĠĠ Ġtop Bar Loading Ġ= Ġtop Bar Loading , ĊĠĠĠ Ġtop Bar Actions Ġ= Ġtop Bar Actions , ĊĠĠĠ Ġswipe Refresh Enable Ġ= Ġswipe Refresh Enable , ĊĠĠĠ Ġswipe Refresh Loading Ġ= Ġswipe Refresh Loading , ĊĠĠĠ Ġswipe Refresh Action Ġ= Ġswipe Refresh Action , ĊĠĠĠ Ġcontent Ġ= Ġcontent , Ċ ) Ċ Ċ /** Ċ Ġ* ĠMain Ġscaffold Ġfor Ġapp Ċ Ġ*/ Ċ @ Opt In ( Experimental Material 3 Api :: class ) Ċ @ Composable Ċ fun Ġ< T > ĠApp Sca ffold ( ĊĠĠĠ Ġback Data : ĠT ? Ġ= Ġnull , ĊĠĠĠ Ġnavigation Dispatcher : ĠNavigation Dispatcher ?, ĊĠĠĠ Ġ// Ġtop Ġbar ĊĠĠĠ Ġtop Bar Title : ĠString ? Ġ= Ġnull , ĊĠĠĠ Ġtop Bar Loading : ĠBoolean Ġ= Ġfalse , ĊĠĠĠ Ġtop Bar Actions : Ġ@ Composable Ġ(( Row Scope ) Ġ-> ĠUnit )? Ġ= Ġnull , ĊĠĠĠ Ġ// Ġswipe Ġrefresh ĊĠĠĠ Ġswipe Refresh Enable : ĠBoolean Ġ= Ġfalse , ĊĠĠĠ Ġswipe Refresh Loading : ĠBoolean Ġ= Ġfalse , ĊĠĠĠ Ġswipe Refresh Action : Ġ() Ġ-> ĠUnit Ġ= Ġ{}, ĊĠĠĠ Ġ// Ġcontent ĊĠĠĠ Ġcontent : Ġ@ Composable Ġ() Ġ-> ĠUnit Ċ ) Ġ{ ĊĊĠĠĠ Ġ// Ġcurrent Destination ĊĠĠĠ Ġvar Ġcurrent Destination : ĠNav Destination ? Ġby Ġremember Ġ{ ĊĠĠĠĠĠĠĠ Ġmutable State Of ( navigation Dispatcher ?. current Destination ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġupdate Ġcurrent Destination ĊĠĠĠ ĠLa unched Effect Animation Ġ{ Ġstate Ġ-> ĊĠĠĠĠĠĠĠ Ġif Ġ( state Ġ== ĠAnimated Nav Graph State . END ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Destination Ġ= Ġnavigation Dispatcher ?. current Destination ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ ĠScaffold ( ĊĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. status Bars Padding () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. navigation Bar sWith I me Padding (), ĊĠĠĠĠĠĠĠ Ġtop Bar Ġ= Ġtop Bar Title ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠApp Top Bar Small ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġback Data Ġ= Ġback Data , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġtop Bar Title , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnavigation Dispatcher Ġ= Ġnavigation Dispatcher , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscroll Behavior Ġ= Ġenter Always Scroll Behavior (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġloading Ġ= Ġtop Bar Loading , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactions Ġ= Ġtop Bar Actions ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġ?: Ġ{}, ĊĠĠĠĠĠĠĠ Ġbottom Bar Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMenu Bottom Bar ( current Destination ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ ĠBox ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠModifier . padding ( it ) ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( swipe Refresh Enable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSw ipe Refresh ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstate Ġ= Ġremember Swipe Refresh State ( swipe Refresh Loading ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Refresh Ġ= Ġswipe Refresh Action , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġindicator Ġ= Ġ{ Ġst , Ġtr Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠApp Swipe Refresh Indicator ( st , Ġtr ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. fill MaxSize () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent . invoke () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent . invoke () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ