Navigation Composeを便利にしてくれるライブラリ

Kenji Abe
Feb 5, 2022

--

Photo by Denise Jans on Unsplash

Navigation Composeはそのまま使うとコード量が増えたり引数の扱いが面倒だったりします。こういった問題を便利にしてくれる compose-destinations というライブラリを紹介します。

このライブラリはNavGraphの設定を簡単にしてくれたり、Type-safe引数を実現してくれます。このライブラリはKSPを使ったコード生成をしています。

これを書いてる時点では 1.2.1-beta です。今後変更があるかもしれません。

簡単な使い方

まずは、簡単な使い方を紹介します。単純に次の画面に遷移するだけのものです。セットアップはREADME等を見てください。

最初に画面のトップとなるComposable関数に @Destination をつけて必要な実装していきます。簡単な説明はコード上にコメントしています。

最後にNavGraphを設定しますが、これはライブラリが生成した NavGraphsDestinationsNavHost に設定するだけです。

これだけで画面遷移の実装ができます。

引数を扱う

引数も簡単に扱うことができます。

受けとりたい引数をComposable関数の引数として指定するだけです。あとはコード生成で引数が渡されるDestinationが生成されるので、それに渡すだけです。

Parcelableの引数

Parcelableの引数も先程と同じように簡単に扱うことが可能になっています。

これはParcelableをBase64に変換することで実現しています。正直、Base64にして扱って良いものかは分からないのですが、ぼくが触ってる感じパフォーマンスが悪いとかはなかったです。

NavBackStackEntryなども引数に指定するだけで受け取れます。

その他

他にもアニメーションの対応や、NavGraphを細かく自分で設定できたりもします。

詳しくは Wiki 等を見てもらえると。

まとめ

compose-destinations について簡単に紹介しました。

個人的には便利に使えそうだなぁって思っています。今のところIssueなどの対応も早いので、なにか気になることあればIssueをあげると良いかなと。

あと個人的に気にしてることですが、諸事情で後から捨てるとなったとしても、なんとか対応できそうな感じなんで、とりあえず試すのもアリかなぁって思ってます。

気になる人は試してみると良いと思います。

--

--

Kenji Abe
Kenji Abe

Written by Kenji Abe

Programmer / Gamer / Google Developers Expert for Android, Kotlin / @STAR_ZERO