Navigation Composeはそのまま使うとコード量が増えたり引数の扱いが面倒だったりします。こういった問題を便利にしてくれる compose-destinations
というライブラリを紹介します。
このライブラリはNavGraphの設定を簡単にしてくれたり、Type-safe引数を実現してくれます。このライブラリはKSPを使ったコード生成をしています。
これを書いてる時点では 1.2.1-beta
です。今後変更があるかもしれません。
簡単な使い方
まずは、簡単な使い方を紹介します。単純に次の画面に遷移するだけのものです。セットアップはREADME等を見てください。
最初に画面のトップとなるComposable関数に @Destination
をつけて必要な実装していきます。簡単な説明はコード上にコメントしています。
最後にNavGraphを設定しますが、これはライブラリが生成した NavGraphs
を DestinationsNavHost
に設定するだけです。
これだけで画面遷移の実装ができます。
引数を扱う
引数も簡単に扱うことができます。
受けとりたい引数をComposable関数の引数として指定するだけです。あとはコード生成で引数が渡されるDestinationが生成されるので、それに渡すだけです。
Parcelableの引数
Parcelableの引数も先程と同じように簡単に扱うことが可能になっています。
これはParcelableをBase64に変換することで実現しています。正直、Base64にして扱って良いものかは分からないのですが、ぼくが触ってる感じパフォーマンスが悪いとかはなかったです。
NavBackStackEntry
なども引数に指定するだけで受け取れます。
その他
他にもアニメーションの対応や、NavGraphを細かく自分で設定できたりもします。
詳しくは Wiki 等を見てもらえると。
まとめ
compose-destinations
について簡単に紹介しました。
個人的には便利に使えそうだなぁって思っています。今のところIssueなどの対応も早いので、なにか気になることあればIssueをあげると良いかなと。
あと個人的に気にしてることですが、諸事情で後から捨てるとなったとしても、なんとか対応できそうな感じなんで、とりあえず試すのもアリかなぁって思ってます。
気になる人は試してみると良いと思います。