72 lines
5.8 KiB
Markdown
72 lines
5.8 KiB
Markdown
[](https://repo.maven.apache.org/maven2/cafe/adriel/voyager/)
|
|
[](https://android-arsenal.com/api?level=21)
|
|
[](https://kotlinlang.org/)
|
|
[](https://ktlint.github.io/)
|
|
[](https://opensource.org/licenses/MIT)
|
|
|
|
<h1 align="center">
|
|
<img height="150" src="https://user-images.githubusercontent.com/2512298/127723355-f56b3040-47cb-44fd-8504-a1868721c1a3.png"/>
|
|
<br>
|
|
<a href="https://voyager.adriel.cafe">Voyager</a>: Compose on Warp Speed
|
|
</h1>
|
|
|
|
A multiplatform navigation library built for, and seamlessly integrated with, [Jetpack Compose](https://developer.android.com/jetpack/compose).
|
|
|
|
Create scalable Single-Activity apps powered by a [pragmatic API](https://voyager.adriel.cafe/navigation):
|
|
|
|
```kotlin
|
|
class HomeScreenModel : ScreenModel {
|
|
// ...
|
|
}
|
|
|
|
class HomeScreen : Screen {
|
|
|
|
@Composable
|
|
override fun Content() {
|
|
val screenModel = rememberScreenModel<HomeScreenModel>()
|
|
// ...
|
|
}
|
|
}
|
|
|
|
class SingleActivity : ComponentActivity() {
|
|
|
|
override fun onCreate(savedInstanceState: Bundle?) {
|
|
super.onCreate(savedInstanceState)
|
|
|
|
setContent {
|
|
Navigator(HomeScreen())
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
Turn on the Warp Drive and enjoy the voyage 🖖
|
|
|
|
### Documentation
|
|
See the [project website](https://voyager.adriel.cafe) for documentation and APIs.
|
|
|
|
### Features
|
|
- [Supported platforms](https://voyager.adriel.cafe/setup#platform-compatibility): Android, iOS, Desktop, Web.
|
|
- [Linear navigation](https://voyager.adriel.cafe/navigation)
|
|
- [BottomSheet navigation](https://voyager.adriel.cafe/navigation/bottomsheet-navigation)
|
|
- [Tab navigation](https://voyager.adriel.cafe/navigation/tab-navigation) like [Youtube app](https://play.google.com/store/apps/details?id=com.google.android.youtube)
|
|
- [Nested navigation](https://voyager.adriel.cafe/navigation/nested-navigation) (multiple stacks, parent navigation)
|
|
- [ScreenModel](https://voyager.adriel.cafe/screenmodel) (a.k.a ViewModel) integrated with [Koin](https://voyager.adriel.cafe/screenmodel/koin-integration), [Kodein](https://voyager.adriel.cafe/screenmodel/kodein-integration), [Hilt](https://voyager.adriel.cafe/screenmodel/hilt-integration), [Coroutines](https://voyager.adriel.cafe/screenmodel/coroutines-integration), [RxJava](https://voyager.adriel.cafe/screenmodel/rxjava-integration), [LiveData](https://voyager.adriel.cafe/screenmodel/livedata-integration)
|
|
- [Android ViewModel](https://voyager.adriel.cafe/android-viewmodel) integration (with [Hilt support](https://voyager.adriel.cafe/android-viewmodel/hilt-integration))
|
|
- Type-safe [multi-module navigation](https://voyager.adriel.cafe/navigation/multi-module-navigation)
|
|
- State-aware [Stack API](https://voyager.adriel.cafe/stack-api)
|
|
- Built-in [transitions](https://voyager.adriel.cafe/transitions)
|
|
- [State restoration](https://voyager.adriel.cafe/state-restoration) after Activity recreation
|
|
- [Lifecycle](https://voyager.adriel.cafe/lifecycle) callbacks
|
|
- [Back press](https://voyager.adriel.cafe/back-press) handling
|
|
- [Deep linking](https://voyager.adriel.cafe/deep-links) support
|
|
|
|
### Samples
|
|
| [Stack API](https://github.com/adrielcafe/voyager/tree/main/samples/android/src/main/java/cafe/adriel/voyager/sample/stateStack) | [Android ViewModel](https://github.com/adrielcafe/voyager/tree/main/samples/android/src/main/java/cafe/adriel/voyager/sample/androidViewModel) | [ScreenModel](https://github.com/adrielcafe/voyager/tree/main/samples/android/src/main/java/cafe/adriel/voyager/sample/screenModel) | [Basic nav.](https://github.com/adrielcafe/voyager/tree/main/samples/android/src/main/java/cafe/adriel/voyager/sample/basicNavigation) |
|
|
|----------|----------|----------|----------|
|
|
|  |  |  |  |
|
|
|
|
| [BottomSheet nav.](https://github.com/adrielcafe/voyager/tree/main/samples/android/src/main/java/cafe/adriel/voyager/sample/bottomSheetNavigation) | [Tab nav.](https://github.com/adrielcafe/voyager/tree/main/samples/android/src/main/java/cafe/adriel/voyager/sample/tabNavigation) | [Multi-module nav.](https://github.com/adrielcafe/voyager/tree/main/samples/multi-module) | [Nested nav.](https://github.com/adrielcafe/voyager/tree/main/samples/android/src/main/java/cafe/adriel/voyager/sample/nestedNavigation) |
|
|
|----------|----------|----------|----------|
|
|
|  |  |  |  |
|