package Ġcom . example . itz mean jan . locate Ċ Ċ import Ġandroid . location . Location Ċ import Ġandroid . location . Location Listener Ċ import Ġandroid . os . Build Ċ import Ġandroid . os . Bundle Ċ import Ġcom . google . android . gms . location . Location Callback Ċ import Ġcom . google . android . gms . location . Location Result Ċ import Ġio . flutter . plugin . common . Event Channel Ċ Ċ data Ġclass ĠLocation Data Holder ( var Ġlongitude : ĠDouble , Ġvar Ġlatitude : ĠDouble , Ġvar Ġtime : ĠLong , Ġvar Ġalt itude : ĠDouble ?, Ġvar Ġbe aring : ĠFloat ?, Ġvar Ġspeed : ĠFloat ?, Ġvar Ġaccuracy : ĠFloat ?, Ġvar Ġvertical Accuracy : ĠFloat ?, Ġvar Ġbe aring Accuracy : ĠFloat ?, Ġvar Ġspeed Accuracy : ĠFloat ?, Ġvar Ġprovider : ĠString ?, Ġvar Ġs atellite Count : ĠInt ?) Ċ Ċ class ĠMy Location CallBack ( private Ġval Ġevent : ĠEvent Channel . Event Sink ) Ġ: ĠLocation Callback () Ġ{ ĊĠĠĠ Ġ// Ġused Ġas Ġcallback Ġservice Ġwhile Ġusing ĠG MS Ġbased Ġlocation ĊĠĠĠ Ġoverride Ġfun Ġon Location Result ( p 0 : ĠLocation Result ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( p 0 Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( location Ġin Ġp 0 . locations ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlocation Data Holder Ġ= ĠLocation Data Holder ( location . longitude , Ġlocation . latitude , Ġlocation . time , Ġnull , Ġnull , Ġnull , Ġnull , Ġnull , Ġnull , Ġnull , Ġnull , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( location . has Alt itude ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocation Data Holder . altitude Ġ= Ġlocation . altitude ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( location . has Be aring ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocation Data Holder . be aring Ġ= Ġlocation . be aring ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( location . has Speed ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocation Data Holder . speed Ġ= Ġlocation . speed ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( location . has Accuracy ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocation Data Holder . accuracy Ġ= Ġlocation . accuracy ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . O ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( location . has Vertical Accuracy ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocation Data Holder . vertical Accuracy Ġ= Ġlocation . vertical Accuracy Met ers ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( location . has Be aring Accuracy ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocation Data Holder . be aring Accuracy Ġ= Ġlocation . be aring Accuracy Degrees ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( location . has Speed Accuracy ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocation Data Holder . speed Accuracy Ġ= Ġlocation . speed Accuracy Met ers PerSecond ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( location . provider Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocation Data Holder . provider Ġ= Ġlocation . provider ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( location . extras Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocation Data Holder . s atellite Count Ġ= Ġlocation . extras . getInt (" s atell ites ", Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent . success ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" longitude " Ġto Ġlocation Data Holder . longitude , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" latitude " Ġto Ġlocation Data Holder . latitude , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" time " Ġto Ġlocation Data Holder . time , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" altitude " Ġto Ġlocation Data Holder . altitude , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" be aring " Ġto Ġlocation Data Holder . be aring , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" speed " Ġto Ġlocation Data Holder . speed , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" accuracy " Ġto Ġlocation Data Holder . accuracy , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" vertical Accuracy " Ġto Ġlocation Data Holder . vertical Accuracy , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" be aring Accuracy " Ġto Ġlocation Data Holder . be aring Accuracy , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" speed Accuracy " Ġto Ġlocation Data Holder . speed Accuracy , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" provider " Ġto Ġlocation Data Holder . provider , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" s atellite Count " Ġto Ġlocation Data Holder . s atellite Count ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠMy Location Listener ( private Ġval Ġevent : ĠEvent Channel . Event Sink ) Ġ: ĠLocation Listener Ġ{ ĊĠĠĠ Ġ// Ġused Ġas Ġlistener Ġservice Ġwhen Ġusing Ġandroid . location . Location Manager Ġbased Ġlocation ĊĠĠĠ Ġoverride Ġfun Ġon Provider Disabled ( provider : ĠString ?) Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Provider Enabled ( provider : ĠString ?) Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Status Changed ( provider : ĠString ?, Ġstatus : ĠInt , Ġextras : ĠBundle ?) Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Location Changed ( location : ĠLocation ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( location Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlocation Data Holder Ġ= ĠLocation Data Holder ( location . longitude , Ġlocation . latitude , Ġlocation . time , Ġnull , Ġnull , Ġnull , Ġnull , Ġnull , Ġnull , Ġnull , Ġnull , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( location . has Alt itude ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocation Data Holder . altitude Ġ= Ġlocation . altitude ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( location . has Be aring ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocation Data Holder . be aring Ġ= Ġlocation . be aring ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( location . has Speed ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocation Data Holder . speed Ġ= Ġlocation . speed ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( location . has Accuracy ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocation Data Holder . accuracy Ġ= Ġlocation . accuracy ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . O ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( location . has Vertical Accuracy ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocation Data Holder . vertical Accuracy Ġ= Ġlocation . vertical Accuracy Met ers ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( location . has Be aring Accuracy ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocation Data Holder . be aring Accuracy Ġ= Ġlocation . be aring Accuracy Degrees ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( location . has Speed Accuracy ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocation Data Holder . speed Accuracy Ġ= Ġlocation . speed Accuracy Met ers PerSecond ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( location . provider Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocation Data Holder . provider Ġ= Ġlocation . provider ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( location . extras Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocation Data Holder . s atellite Count Ġ= Ġlocation . extras . getInt (" s atell ites ", Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevent . success ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" longitude " Ġto Ġlocation Data Holder . longitude , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" latitude " Ġto Ġlocation Data Holder . latitude , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" time " Ġto Ġlocation Data Holder . time , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" altitude " Ġto Ġlocation Data Holder . altitude , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" be aring " Ġto Ġlocation Data Holder . be aring , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" speed " Ġto Ġlocation Data Holder . speed , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" accuracy " Ġto Ġlocation Data Holder . accuracy , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" vertical Accuracy " Ġto Ġlocation Data Holder . vertical Accuracy , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" be aring Accuracy " Ġto Ġlocation Data Holder . be aring Accuracy , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" speed Accuracy " Ġto Ġlocation Data Holder . speed Accuracy , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" provider " Ġto Ġlocation Data Holder . provider , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" s atellite Count " Ġto Ġlocation Data Holder . s atellite Count ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ