Skip to content

Modificator/compose-navigator

Repository files navigation

Compose Navigator

License

Easier to complete Jetpack Compose navigation

Getting started

In your build.gradle:

dependencies {
    implementation 'com.patchself:compose-navigator:0.1.3'
}

Or if you use gradle.kts, in yourbuild.gradle.kts

dependencies {
    implementation("com.patchself:compose-navigator:0.1.3")
}

Usage

  1. Add config your compose activity
class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        //set open app first page
        navigationController.initController(SplashPage())
        setContent {
            navigationController.viewContent()
        }
    }

    override fun onBackPressed() {
        // navigator go back handler
        if (!navigationController.onBackPressed()){
            super.onBackPressed()
        }
    }
}
  1. Write your custom page
class CustomPage : PageController() {
    override fun getId() = R.id.CustomPage

    /**
     * write page content in this method
     */
    @Composable
    override fun screenContent() {
        Scaffold(topBar = {
            TopAppBar(
                title = { Text(text = "Navigator Sample") },
                navigationIcon = {
                    IconButton(onClick = { navigateBack() }) {
                        Icon(asset = Icons.Filled.ArrowBack)
                    }
                },
                elevation = 4.dp
            )
        }) {
        }
    }
}
  1. In your Custom Page,which extend PageController, you can use navigateTo(PageController) to new page, and navigateBack() go back to last page
  2. You can use resetTo(pageId) back to specify page, and change page args like
    resetTo<HomePage>(R.id.HomePage){
        argsOfHomePage = newValue
    }

preview