package Ġcom . sk yy o . samples . application . activity Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroidx . activity . Component Activity Ċ import Ġandroidx . activity . compose . setContent Ċ import Ġandroidx . compose . animation . Experimental Animation Api Ċ import Ġandroidx . compose . material . Sca ffold Ċ import Ġandroidx . compose . runtime . Disposable Effect Ċ import Ġandroidx . compose . runtime . La unched Effect Ċ import Ġandroidx . compose . runtime . remember Ċ import Ġandroidx . compose . ui . platform . Local Lifecycle Owner Ċ import Ġandroidx . core . view . Window Compat Ċ import Ġandroidx . lifecycle . Lifecycle Ċ import Ġandroidx . lifecycle . flow With Lifecycle Ċ import Ġandroidx . navigation . Nav Controller Ċ import Ġandroidx . navigation . plus Assign Ċ import Ġcom . google . ac comp an ist . in sets . Provide Window Insets Ċ import Ġcom . google . ac comp an ist . navigation . animation . remember Animated Nav Controller Ċ import Ġcom . google . ac comp an ist . navigation . material . Experimental Material Navigation Api Ċ import Ġcom . google . ac comp an ist . navigation . material . Modal Bottom Sheet Layout Ċ import Ġcom . google . ac comp an ist . navigation . material . remember Bottom Sheet Navigator Ċ import Ġcom . sk yy o . samples . application . Destination Ċ import Ġcom . sk yy o . samples . application . pers istance . DataStore Manager Ċ import Ġcom . sk yy o . samples . theme . I gdb Browser Theme Ċ import Ġcom . sk yy o . samples . utils . Navigation Dispatcher Ċ import Ġdagger . h ilt . android . Android EntryPoint Ċ import Ġkotlinx . coroutines . flow . collect Ċ import Ġkotlinx . coroutines . run Blocking Ċ import Ġjavax . inject . Inject Ċ Ċ @ Android EntryPoint Ċ class ĠMainActivity Ġ: ĠComponent Activity () Ġ{ ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġdata Store Manager : ĠData Store Manager ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġnavigation Dispatcher : ĠNavigation Dispatcher ĊĊĠĠĠ Ġ@ Opt In ( Experimental Animation Api :: class , ĠExperimental Material Navigation Api :: class ) ĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġapply Edge To Edge () ĊĊĠĠĠĠĠĠĠ Ġ// TODO Ġcan Ġbe Ġoptimized . ĠShould n 't Ġbe Ġused Ġif Ġwe Ġdon 't Ġallow Ġfor Ġmanual Ġtheme Ġswitching , ĊĠĠĠĠĠĠĠ Ġ// Ġunless Ġwe Ġforce Ġlight Ġtheme ĊĠĠĠĠĠĠĠ Ġval Ġsaved Theme Ġ= Ġrun Blocking Ġ{ Ġdata Store Manager . getApp Theme () Ġ} ĊĊĠĠĠĠĠĠĠ Ġset Content Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlifecycle Owner Ġ= ĠLocal Lifecycle Owner . current ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnav Controller Ġ= Ġremember Animated Nav Controller () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbottom Sheet Navigator Ġ= Ġremember Bottom Sheet Navigator () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnav Controller . navigator Provider Ġ+= Ġbottom Sheet Navigator ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnavigation Events Ġ= Ġremember ( navigation Dispatcher . emitter , Ġlifecycle Owner ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnavigation Dispatcher . emitter . flow With Lifecycle ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlifecycle Owner . lifecycle , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLifecycle . State . STARTED ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠDis posable Effect ( nav Controller ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcallback Ġ= ĠNav Controller . On Destination Changed Listener Ġ{ Ġ_, Ġdestination , Ġargs Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( destination . route ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDestination . Sample Container . route Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnav Controller . add On Destination Changed Listener ( callback ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Dispose Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnav Controller . remove On Destination Changed Listener ( callback ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLa unched Effect ( Unit ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnavigation Events . collect Ġ{ Ġevent Ġ-> Ġevent ( nav Controller ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠI gdb Browser Theme ( saved Theme ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProvide Window Insets Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġused Ġonly Ġfor Ġthe Ġbottom Ġsheet Ġdest inations ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠModal Bottom Sheet Layout ( bottom Sheet Navigator ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠScaffold Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPop ulated Nav Host ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Destination Ġ= ĠDestination . Sample Container . route , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnav Controller Ġ= Ġnav Controller ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġapply Edge To Edge () Ġ{ ĊĠĠĠĠĠĠĠ ĠWindow Compat . set Decor Fits System Windows ( window , Ġfalse ) ĊĠĠĠ Ġ} Ċ } ĊĊ