1
/
5

エンジニアブログ「Jetpack ComposeのPreviewParameterでプレビューを楽にする」

こんにちは。おいしい健康Androidエンジニアの小林です。

Jetpack Composeのプレビュー機能好きなんですが、PreviewParameterでもっと好きになったのでブログにしてみます。

実際に作った画面

こんな画面をJetpack Composeでつくりました。

アプリ内課金ができるのですが、その画面内に課金に関するFAQをリストした画面です。

※画像中の情報は 2021/12/24現在のものです。

文字数やデバイスサイズごとにプレビューしたい

上のスクショのとおり内容による文字数の差が結構あります。2行程度から〜10行程度のものまで。 「デバイスサイズによっては画面が1つのカードで覆い尽くされてしまって読みづらさを感じるのではないか?」と、画面サイズごとにプレビューで確認しておきたくなりました。

まずは1つプレビューしてみます。

@Preview(showBackground = true, backgroundColor = 0xffffffff)
@Composable
fun PreviewFaqCard() {
FaqCard(faq = Faq(question = "2週間無料お試しは何度でもできますか?", answer = "2週間無料お試しは、お一人様につき1回までとなります。"))
}

他の内容や異なるデバイスサイズごとにプレビューしたい場合、上記のComposableを複製してよしなに変えればいいですが、毎度毎度書くのはめんどくさいです。

そこでPreviewParameterを使うと回避できます。

PreviewParameter使ってみる

PreviewParameterProviderを継承したクラスをつくります。

class FaqPreviewParameterProvider : PreviewParameterProvider {
override val values = sequenceOf(
Faq(question = "2週間無料お試しは何度でもできますか?", answer = "2週間無料お試しは、お一人様につき1回までとなります。"),
Faq(question = "体調が悪い時や、健康的な料理を覚えたい時など、少しの期間だけ利用することはできますか?", answer = "月額プランであれば利用したい月だけ有料メンバーシップに登録して、利用しない月はメンバーシップを停止(休会)することができます。プロフィールやお気に入りレシピ、献立などは保存されたままとなり、有料メンバーシップに再登録をしていただくことで、情報を引き継いだままサービスの利用も再開できます。"),
Faq(question = "スマホで登録しても、パソコンで使えますか?", answer = "メンバーシップに登録したアカウントであれば、パソコンでもご利用いただけます。"),
Faq(question = "2週間無料お試し期間中に解約できますか?", answer = "いつでも解約できます。お試し期間が終了する24時間前までに解約すれば料金は発生いたしません。解約しなければ選択したプランが自動で課金されます。")
)
}

そしたらプレビューするComosableの引数に渡します。

@Preview(showBackground = true, backgroundColor = 0xffffffff)
@Composable
fun PreviewFaqCard(
@PreviewParameter(FaqPreviewParameterProvider::class) faq: Faq
) {
FaqCard(faq = faq)
}

そうすると、FaqPreviewParameterProviderのsequenceOfに入れた分だけプレビューが勝手に作られます。


※プレビューがsequenceOfのsizeの分だけ表示される

複数Comosable作って毎度データ用意しなくてよいのです。楽。

デバイスサイズごとにプレビューしたいときも、毎度データ用意せず@PreviewParameterに渡してあげるだけでよいです。

Jetpack Composeをもっと好きになりますね。

最後に

おいしい健康Andoridアプリでは2週間トライアルを実施中 * です。食事のお悩みをおいしい健康にお手伝いさせてください。インストールはこちら

そして、おいしい健康では、モバイル(iOS/Android)、Web、機械学習と様々な職種のエンジニアが働いています。エンジニアブログでは、おいしい健康のエンジニアメンバーが日々どんな課題に向き合っているのかを綴っています。過去のブログもありますので、ご興味ある方はぜひこちらも覗いてみてください。

https://oishi-kenko.hatenablog.com/

カジュアル面談の希望も随時受け付けてますので、お気軽にご連絡ください!

おいしい健康's job postings
7 Likes
7 Likes

Weekly ranking

Show other rankings
Invitation from おいしい健康
If this story triggered your interest, have a chat with the team?