package Ġcom . jes en . common _ util _ lib . paging Ċ Ċ import Ġandroidx . compose . foundation . Experimental Foundation Api Ċ import Ġandroidx . compose . foundation . layout . Arrange ment Ċ import Ġandroidx . compose . foundation . layout . Padding Values Ċ import Ġandroidx . compose . foundation . layout . fill Max Height Ċ import Ġandroidx . compose . foundation . layout . fill Max Width Ċ import Ġandroidx . compose . foundation . lazy . Grid Cells Ċ import Ġandroidx . compose . foundation . lazy . Lazy Grid Scope Ċ import Ġandroidx . compose . foundation . lazy . Lazy List State Ċ import Ġandroidx . compose . foundation . lazy . Lazy Vertical Grid Ċ import Ġandroidx . compose . runtime .* Ċ import Ġandroidx . compose . ui . Modifier Ċ import Ġandroidx . compose . ui . unit . dp Ċ import Ġandroidx . paging . Load State Ċ import Ġandroidx . paging . compose . Lazy Paging Items Ċ import Ġcom . google . ac comp an ist . pager . Experimental Pager Api Ċ 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 Ġkotlinx . coroutines . Coroutine Scope Ċ import Ġkotlinx . coroutines . launch Ċ Ċ /** Ċ Ġ* Ġä¸ĭ æĭī åĬłè½½ å°ģè£ħ ĠLazy Vertical Grid Ċ Ġ* Ċ Ġ* Ġimplementation Ġ" com . google . ac comp an ist : ac comp an ist - swiper ef resh : xxx " Ċ Ġ* Ġ*/ Ċ @ Experimental Pager Api Ċ @ Experimental Foundation Api Ċ @ Composable Ċ fun Ġ< T Ġ: ĠAny > ĠSw ipe Refresh GridLayout ( ĊĠĠĠ Ġlazy List State : ĠLazy List State , ĊĠĠĠ Ġcollect As Lazy Paging Items : ĠLazy Paging Items < T >, ĊĠĠĠ Ġlist Content : ĠLazy Grid Scope . () Ġ-> ĠUnit , Ċ ) Ġ{ ĊĠĠĠ Ġval Ġremember Swipe Refresh State Ġ= Ġremember Swipe Refresh State ( is Refresh ing Ġ= Ġfalse ) ĊĊĠĠĠ Ġvar Ġloading Page Error Ġby Ġremember Ġ{ Ġmutable State Of ( false ) Ġ} ĊĊĠĠĠ ĠSw ipe Refresh ( ĊĠĠĠĠĠĠĠ Ġstate Ġ= Ġremember Swipe Refresh State , ĊĠĠĠĠĠĠĠ Ġon Refresh Ġ= Ġ{ Ġcollect As Lazy Paging Items . refresh () Ġ} ĊĠĠĠ Ġ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġcoroutine Scope Ġ= Ġremember Coroutine Scope () ĊĊĠĠĠĠĠĠĠ Ġremember Swipe Refresh State . is Refresh ing Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcollect As Lazy Paging Items . load State . refresh Ġis ĠLoad State . Loading ĊĊĠĠĠĠĠĠĠ Ġif Ġ( loading Page Error ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠError Content () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcollect As Lazy Paging Items . retry () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLazy Vertical Grid ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcells Ġ= ĠGrid Cells . Fixed ( 2 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstate Ġ= Ġlazy List State , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhorizontal Arrange ment Ġ= ĠArrange ment . spaced By ( 4 . dp ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvertical Arrange ment Ġ= ĠArrange ment . spaced By ( 4 . dp ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Padding Ġ= ĠPadding Values ( start Ġ= Ġ 5 . dp ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. fill Max Width () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. fill Max Height (), ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist Content () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/* handler Load State ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpaging Items Ġ= Ġcollect As Lazy Paging Items , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext Grid Ġ= Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscope Ġ= Ġcoroutine Scope , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlazy List State Ġ= Ġlazy List State , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) */ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Experimental Foundation Api Ċ fun Ġ< T Ġ: ĠAny > Ġhandler Load State ( ĊĠĠĠ Ġpaging Items : ĠLazy Paging Items < T >, ĊĠĠĠ Ġcontext Grid : ĠLazy Grid Scope ? Ġ= Ġnull , ĊĠĠĠ Ġscope : ĠCor outine Scope , ĊĠĠĠ Ġlazy List State : ĠLazy List State , Ċ ) Ġ{ ĊĠĠĠ Ġpaging Items . apply Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġload State . append Ġis ĠLoad State . Loading Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// åĬłè½½ æĽ´å¤ļ ï¼Į åºķ éĥ¨ loading ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext Grid ?. item Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLoading Item () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġload State . append Ġis ĠLoad State . Error Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// åĬłè½½ æĽ´å¤ļ å¼Ĥå¸¸ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext Grid ?. item Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠError More Retry Item () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpaging Items . retry () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġload State . append Ġ== ĠLoad State . Not Loading ( end Of Pagination Reached Ġ= Ġtrue ) Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ å·²ç»ı æ²¡æľī æĽ´å¤ļ æķ°æį® äºĨ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext Grid ?. item Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNo More Data Find Item ( onClick Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlazy List State . animate Scroll To Item ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġload State . refresh Ġis ĠLoad State . Error Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( paging Items . item Count Ġ<= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// åĪ·æĸ° çļĦæĹ¶åĢĻ ï¼Į å¦Ĥæŀľ item Count å°ı äºİ 0 ï¼Į ç¬¬ ä¸Ģæ¬¡ åĬłè½½ å¼Ĥå¸¸ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// loading Page Error Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext Grid ?. item Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠError More Retry Item () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpaging Items . retry () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġload State . refresh Ġis ĠLoad State . Loading Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ ç¬¬ ä¸Ģæ¬¡ åĬłè½½ ä¸Ķ æŃ£åľ¨ åĬłè½½ ä¸Ń ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( paging Items . item Count Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } ĊĊĊĊ