package Ġcom . rus lan . hl ush an . core . ui . fragment Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroidx . annotation . ContentView Ċ import Ġandroidx . annotation . Id Res Ċ import Ġandroidx . annotation . Layout Res Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġcom . github . ter r ak ok . c icer one . C icer one Ċ import Ġcom . github . ter r ak ok . c icer one . Navigator Ċ import Ġcom . rus lan . hl ush an . core . extensions . lazy Unsafe Ċ import Ġcom . rus lan . hl ush an . core . thread . Ui MainThread Ċ import Ġcom . rus lan . hl ush an . core . ui . api . utils . On Back Pressed Handler Ċ import Ġcom . rus lan . hl ush an . core . ui . routing . C icer one Owner Ċ import Ġcom . rus lan . hl ush an . core . ui . routing . Flow C icer ones Holder Ċ import Ġcom . rus lan . hl ush an . core . ui . routing . Flow Fragment Lifecycle Plugin Observer Ċ import Ġcom . rus lan . hl ush an . core . ui . routing . Flow Router Ċ import Ġjavax . inject . Inject Ċ Ċ abstract Ġclass ĠBase Flow Fragment Ċ @ ContentView Ċ constructor ( ĊĠĠĠĠĠĠĠ Ġ@ Layout Res Ġlayout Res Id : ĠInt Ġ= Ġcom . rus lan . hl ush an . core . ui . layout . container . R . layout . app _ layout _ container Ċ ) Ġ: ĠBase Fragment ( layout Res Id ), ĠC icer one Owner Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġcurrent Fragment : ĠFragment ? ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġchild FragmentManager . find Fragment ById ( flow Container Res Id ) ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġflow C icer ones Holder : ĠFlow C icer ones Holder ĊĊĠĠĠ Ġ@ get : Id Res ĊĠĠĠ Ġprotected Ġopen Ġval Ġflow Container Res Id : ĠInt ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġcom . rus lan . hl ush an . core . ui . layout . container . R . id . app _ container ĊĊĠĠĠ Ġprotected Ġabstract Ġval Ġflow Name : ĠString ĊĊĠĠĠ Ġoverride Ġval Ġc icer one : ĠC icer one < Flow Router > Ġby Ġlazy Unsafe Ġ{ ĊĠĠĠĠĠĠĠ Ġflow C icer ones Holder . get OrCreate ( flow Name , Ġparent Router ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Ui MainThread ĊĠĠĠ Ġoverride Ġfun Ġinit Lifecycle Plugin Observer s () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . init Lifecycle Plugin Observer s () ĊĠĠĠĠĠĠĠ Ġadd Lifecycle Plugin Observer ( Flow Fragment Lifecycle Plugin Observer ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġflow C icer one Ġ= Ġc icer one , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Flow Navigator Ġ= Ġthis :: create Flow Navigator ĊĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġif Ġ( child FragmentManager . fragments . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġopen First Flow Screen () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Back Pressed () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġhandler Ġ= Ġ( current Fragment Ġas ? ĠOn Back Pressed Handler ) ĊĠĠĠĠĠĠĠ Ġif Ġ( handler Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandler . on Back Pressed () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Back Pressed () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Ui MainThread ĊĠĠĠ Ġoverride Ġfun ĠonClose Scope () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onClose Scope () ĊĠĠĠĠĠĠĠ Ġflow C icer ones Holder . clear ( flow Name ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Ui MainThread ĊĠĠĠ Ġprotected Ġabstract Ġfun Ġcreate Flow Navigator (): ĠNavigator ĊĊĠĠĠ Ġ@ Ui MainThread ĊĠĠĠ Ġprotected Ġabstract Ġfun Ġopen First Flow Screen () Ċ }