/* Ċ Ġ* ĠCopyright Ġ 2 0 2 0 Ġ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 . owl . ui . utils Ċ Ċ import Ġandroidx . activity . On Back Pressed Callback Ċ import Ġandroidx . activity . On Back Pressed Dispatcher Ċ import Ġandroidx . compose . runtime . Composable Ċ import Ġandroidx . compose . runtime . on Commit Ċ import Ġandroidx . compose . runtime . remember Ċ import Ġandroidx . compose . runtime . static Ambient Of Ċ Ċ /** Ċ Ġ* ĠAn Ġeffect Ġfor Ġhandling Ġp resses Ġof Ġthe Ġdevice Ġback Ġbutton . Ċ Ġ*/ Ċ @ Composable Ċ fun Ġback Handler ( ĊĠĠĠ Ġenabled : ĠBoolean Ġ= Ġtrue , ĊĠĠĠ Ġon Back : Ġ() Ġ-> ĠUnit Ċ ) Ġ{ ĊĠĠĠ Ġval Ġback Callback Ġ= Ġremember ( on Back ) Ġ{ ĊĠĠĠĠĠĠĠ Ġobject Ġ: ĠOn Back Pressed Callback ( enabled ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġhandle On Back Pressed () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Back () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġon Commit ( enabled ) Ġ{ ĊĠĠĠĠĠĠĠ Ġback Callback . isEnabled Ġ= Ġenabled ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġdispatcher Ġ= ĠAmb ient Back Dispatcher . current ĊĠĠĠ Ġon Commit ( back Callback ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdispatcher . add Callback ( back Callback ) ĊĠĠĠĠĠĠĠ Ġon Dispose Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġback Callback . remove () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠAn Ġ[ android x . compose . runtime . Ambient ] Ġproviding Ġthe Ġcurrent Ġ[ On Back Pressed Dispatcher ]. ĠYou Ġmust Ċ Ġ* Ġ[ provide ][ android x . compose . runtime . Providers ] Ġa Ġvalue Ġbefore Ġuse . Ċ Ġ*/ Ċ internal Ġval ĠAmb ient Back Dispatcher Ġ= Ġstatic Ambient Of < On Back Pressed Dispatcher > Ġ{ ĊĠĠĠ Ġerror (" No ĠBack ĠDispatcher Ġprovided ") Ċ } Ċ