0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Navigation3を実装してみるPart1

Posted at

はじめに

今回から、Compose3を使って遷移実装をしていきます。
まずは簡単な2画面の遷移実装をしていきます。

導入方法

まずは、以下2つにコードを追加し、ライブラリを使えるようにします

libs.versions.toml
navigation3 = "1.0.0-alpha09"
androidx-navigation3-runtime = { group = "androidx.navigation3", name = "navigation3-runtime", version.ref = "navigation3" }
androidx-navigation3-ui = { group = "androidx.navigation3", name = "navigation3-ui", version.ref = "navigation3" }
build.gradle
    implementation(libs.androidx.navigation3.runtime)
    implementation(libs.androidx.navigation3.ui)

これで導入は完了です

実装方法

次は実装方法です

MainActivity
// Navigation3のキーを定義
// 実用化する場合、Objectなどでキーをまとめておくのがいいと思いますが、今回はMainAvtivityにまとめて書いちゃいましょう
@Serializable
object Home : NavKey

@Serializable
object Detail : NavKey

@Composable
fun AppNavigation3(modifier: Modifier = Modifier) {
    // Navigation3のバックスタックを作成
    val backStack = rememberNavBackStack(Home)

    // NavDisplayを使用してナビゲーションを実装
    NavDisplay(
        backStack = backStack,
        entryProvider = entryProvider {
            entry<Home> {
                HomeScreen(
                    onNavigateToDetail = { backStack.add(Detail) }
                )
            }
            entry<Detail> {
                DetailScreen(
                    onNavigateBack = { backStack.removeLast() }
                )
            }
        },
        modifier = modifier
    )
}

これで無事2画面間の簡単な遷移実装ができましたね!
次からはもう少し複雑な遷移の実装をしてみようと思います

最後に

今年のDroidKaigiで一番気になっていたNavigation3の発表でさまざまな知見を得ることができましたが、便利な分要素が多いのでいつでも自分で見返せるように記事を書いてみました。
どなたかのお役に立てたら幸いです

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?