sldboy / compose-navigator

Jetpack Compose page navigator & stack

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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

About

Jetpack Compose page navigator & stack

License:Apache License 2.0


Languages

Language:Kotlin 100.0%