@ file : Suppress (" DE PREC ATION ") Ġ// ĠPlugin Ġregistry Ġis Ġbut ĠRequest Permissions Result Listener Ġis Ġnot Ċ package Ġcom . flutter beacon Ċ Ċ import Ġandroid . content . pm . PackageManager Ċ import Ġandroidx . core . app . Activity Compat Ċ import Ġio . flutter . plugin . common . Event Channel Ċ import Ġio . flutter . plugin . common . Method Channel Ċ import Ġio . flutter . plugin . common . Plugin Registry Ċ Ċ object ĠPermission Controller Ġ: ĠPlugin Registry . Request Permissions Result Listener Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġlooping Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġval Ġlisteners Ġ= Ġmutable Set Of < Plugin Registry . Request Permissions Result Listener >() ĊĠĠĠ Ġprivate Ġval Ġto Remove Listeners Ġ= Ġmutable Set Of < Plugin Registry . Request Permissions Result Listener >() ĊĊĠĠĠ Ġfun Ġregister ( listener : ĠPlugin Registry . Request Permissions Result Listener ) Ġ= Ġlisteners . add ( listener ) ĊĊĠĠĠ Ġfun Ġunregister ( listener : ĠPlugin Registry . Request Permissions Result Listener ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif (! loop ing ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlisteners . remove ( listener ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġto Remove Listeners . add ( listener ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Request Permissions Result ( request Code : ĠInt , Ġpermissions : ĠArray < out ĠString > ?, Ġgrant Results : ĠInt Array ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġlooping Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġlisteners . filter Ġ{ Ġit Ġ! in Ġto Remove Listeners Ġ}. any Ġ{ Ġit . on Request Permissions Result ( request Code , Ġpermissions , Ġgrant Results ) Ġ} ĊĠĠĠĠĠĠĠ Ġto Remove Listeners . forEach Ġ{ Ġlisteners . remove ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġlooping Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} Ċ Ċ } Ċ Ċ sealed Ġclass ĠPermission Result Listener ( private Ġval Ġplugin : ĠFlutter Beacon Plugin ) Ġ: ĠPlugin Registry . Request Permissions Result Listener Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġon Request Permissions Result ( request Code : ĠInt , Ġpermissions : ĠArray < out ĠString >, Ġgrant Results : ĠInt Array ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( request Code Ġ!= ĠFlutter Beacon Plugin . REQUEST _ CODE _ LOCATION ) Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġval Ġpermission Ġ= Ġpermissions . first () ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġif Ġ(! Activity Compat . should Show Request Permission R ationale ( plugin . activity !!. activity , Ġpermission )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( grant Results . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" NOT _ DE TERMIN ED " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( grant Results . first () Ġ== ĠPackage Manager . PERMISSION _ GRAN TED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" GRAN TED " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" DEN IED " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" DEN IED " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġon Result ( result ) ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġabstract Ġfun Ġon Result ( result : ĠString ) ĊĊĠĠĠ Ġprotected Ġfun Ġunregister (): ĠUnit ? Ġ= ĠPermission Controller . unregister ( this ) Ċ } Ċ Ċ class ĠPermission Responder ( private Ġval Ġresult : ĠMethod Channel . Result , Ġplugin : ĠFlutter Beacon Plugin ) Ġ: ĠPermission Result Listener ( plugin ) Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġon Result ( result : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( result Ġ== Ġ" GRAN TED ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . result . success ( true ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . result . error (" Beacon ", Ġ" location Ġservices Ġnot Ġallowed ", Ġnull ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġunregister () ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠPermission Broad C aster ( plugin : ĠFlutter Beacon Plugin ) Ġ: ĠPermission Result Listener ( plugin ), ĠEvent Channel . Stream Handler Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġsink : ĠEvent Channel . Event Sink ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun Ġon Result ( result : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsink ?. success ( result ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Listen ( arguments : ĠAny , Ġevents : ĠEvent Channel . Event Sink ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsink Ġ= Ġevents ĊĠĠĠĠĠĠĠ ĠPermission Controller . register ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Cancel ( arguments : ĠAny ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġunregister () ĊĠĠĠ Ġ} Ċ } Ċ