mirror of
https://github.com/InsanusMokrassar/docs.git
synced 2024-11-22 16:24:00 +00:00
partially done navigation/getting-started
This commit is contained in:
parent
470043d360
commit
c9675ec31a
@ -1,4 +1,4 @@
|
|||||||
# Getting started
|
# Getting started (TBD)
|
||||||
|
|
||||||
[![Maven Central](https://img.shields.io/maven-central/v/dev.inmo/navigation.core?label=navigation&style=flat-square)](https://github.com/InsanusMokrassar/navigation)
|
[![Maven Central](https://img.shields.io/maven-central/v/dev.inmo/navigation.core?label=navigation&style=flat-square)](https://github.com/InsanusMokrassar/navigation)
|
||||||
|
|
||||||
@ -12,11 +12,9 @@ Traditionally, you need to add dependency to your project. Currently, there are
|
|||||||
| `Core` | Only necessary tools for your projects | `implementation "dev.inmo:navigation.core:$navigation_version"` |
|
| `Core` | Only necessary tools for your projects | `implementation "dev.inmo:navigation.core:$navigation_version"` |
|
||||||
| `MVVM` | Model-View-ViewModel architecture tools + `Core` components | `implementation "dev.inmo:navigation.mvvm:$navigation_version"` |
|
| `MVVM` | Model-View-ViewModel architecture tools + `Core` components | `implementation "dev.inmo:navigation.mvvm:$navigation_version"` |
|
||||||
|
|
||||||
# Initialization
|
# Get started
|
||||||
|
|
||||||
After you have added your dependency, you should initialize navigation.
|
After you have added your dependency, you should initialize navigation. There are several important things:
|
||||||
|
|
||||||
There are several important things:
|
|
||||||
|
|
||||||
1. `Config` - it is an instance of any class which extending the `NavigationNodeDefaultConfig` in common case
|
1. `Config` - it is an instance of any class which extending the `NavigationNodeDefaultConfig` in common case
|
||||||
2. `Factory` - usually object which may create a node or some required part for node
|
2. `Factory` - usually object which may create a node or some required part for node
|
||||||
@ -32,6 +30,17 @@ data class MainConfig(
|
|||||||
) : NavigationNodeDefaultConfig
|
) : NavigationNodeDefaultConfig
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Both `JS` and `Android` platforms require `ViewModel` for their `MVVM` node variants, but it can be common as well as
|
||||||
|
`MainConfig`:
|
||||||
|
|
||||||
|
```kotlin
|
||||||
|
class MainViewModel(
|
||||||
|
node: NavigationNode<MainConfig, NavigationNodeDefaultConfig>
|
||||||
|
) : ViewModel(
|
||||||
|
node
|
||||||
|
)
|
||||||
|
```
|
||||||
|
|
||||||
### JS part
|
### JS part
|
||||||
|
|
||||||
```kotlin
|
```kotlin
|
||||||
@ -50,7 +59,7 @@ class MainNode(
|
|||||||
class MainNodeView(
|
class MainNodeView(
|
||||||
config: MainConfig,
|
config: MainConfig,
|
||||||
chain: NavigationChain<NavigationNodeDefaultConfig>,
|
chain: NavigationChain<NavigationNodeDefaultConfig>,
|
||||||
) : View<MainConfig, NavigationNodeDefaultConfig>(
|
) : View<MainConfig, MainViewModel>(
|
||||||
config,
|
config,
|
||||||
chain
|
chain
|
||||||
) {
|
) {
|
||||||
@ -75,6 +84,10 @@ object MainNodeFactory : NavigationNodeFactory<NavigationNodeDefaultConfig> {
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
Data below is under TBD
|
||||||
|
|
||||||
### Android
|
### Android
|
||||||
|
|
||||||
In Android there is one important note: you will not directly work with nodes. In fact it will be required to create
|
In Android there is one important note: you will not directly work with nodes. In fact it will be required to create
|
||||||
@ -86,8 +99,15 @@ class MainFragment : NodeFragment<MainConfig, NavigationNodeDefaultConfig>() {
|
|||||||
// Your code
|
// Your code
|
||||||
// Here will be available: node with type `AndroidFragmentNode`, config: `MainConfig`
|
// Here will be available: node with type `AndroidFragmentNode`, config: `MainConfig`
|
||||||
}
|
}
|
||||||
|
// MVVM Variant
|
||||||
|
class MainViewFragment : ViewFragment<MainViewModel, MainConfig>() {
|
||||||
|
// Will be available also `viewModel` via koin `lazyInject`
|
||||||
|
override val viewModelClass
|
||||||
|
get() = MainViewModel::class
|
||||||
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
Initialization is different on the platforms, so, lets take a look at each one.
|
Initialization is different on the platforms, so, lets take a look at each one.
|
||||||
|
|
||||||
## JS
|
## JS
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
# Navigation
|
# Navigation
|
||||||
|
|
||||||
|
**This library uses koin as preferred DI in MVVM part**
|
||||||
|
|
||||||
Navigation is a library for simple management for your app views (or some other logics). In this library there are several
|
Navigation is a library for simple management for your app views (or some other logics). In this library there are several
|
||||||
important terms:
|
important terms:
|
||||||
|
|
||||||
|
@ -47,6 +47,7 @@ nav:
|
|||||||
- 'kslog/logging.md'
|
- 'kslog/logging.md'
|
||||||
- 'Navigation':
|
- 'Navigation':
|
||||||
- 'navigation/index.md'
|
- 'navigation/index.md'
|
||||||
|
- 'navigation/getting-started.md'
|
||||||
|
|
||||||
use_directory_urls: false
|
use_directory_urls: false
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user