あなたのUI/UXレベルを上げるニッチなPackageたち。
仕事や個人開発で作っているプロダクトのユーザー体験を1つ成長させるPackageを紹介します。
「こんなpackageあります」とデザイナーに提案してみても良いかもしれません。
soft_edge_blur
Progressive blurでぼかしをうまく溶け込ませる Progressive blurとはぼかし効果を段階的に変化させる技術です。
アプリライブラリなどで使われていますが、これによりアプリ一覧とApp barの境界線が溶け込んでいます。
そのためより画面が広く感じさせることができます。
progressive blurについてはこちらが参考になりました。
Rich Text Editorで書き心地体験をあげる
Rich Text Editorとは太字や箇条書きを簡単に書けるエディターのことです。
例えばNotionやSlackなどは-
と打つことで箇条書きになったりしますよね。
FlutterのTextField
にそのような機能はありませんが、いくつかPackageが存在します。
flutter_quill
有名どころのRich Text Editorで1番有名なのはflutter_quill
ではないでしょうか。
FlutterだけではなくJSなどもあります。
ドキュメントがしっかりしています。
appflowy-editor
Notionみたいな意外と知られて否かもしれないですが、appflowy-editor
というエディタはNotionみたいな機能を実現できます。
例えば、/
を打つことでNotionっぽいメニューバー的なのが出てきます。
また行をドラック&ドロップで移動することもできます。
iOSに近づける
iOS標準のコンポーネントに近づけたWidgetとしてCupertino系があります。
PackageでもiOSに見た目を近づけるものがあります。
pull_down_button
Pull Down Button このような見た目のPull Downを実現できます。
見た目はかなり似ていて、iOS標準のアプリかなと思わせるくらいですが、インタラクションがもう一歩というところはあります。
例えば、このPull Downを開く時にiOS標準は画面から指を離さずにタップすることができます。
このPackageではそれができません。
とはいえユーザーに馴染みのある見た目を提供できるメリットはありますし、デザインのコストも抑えられます。
iOS標準のリマインダーアプリ
modal_bottom_sheet
公式に採用されたモーダルシート こちらはすでに知っている方もいるかと思います。
iOSのモーダル風の画面遷移ができます。
どうやら、Flutter公式がこちらを採用することになっていて、3.29くらいでpackageを使わなくても使えるようになっていそうです。(3.27にはなさそうでした)
figma_squircle
滑らかな角丸で柔らかい印象を与える Flutterの角丸はiOS標準の角丸と比べて柔らかさが足りません。
より滑らかな角丸をSquircle(スクワークル)と言います。
こちらを適応することでより柔らかい印象を与えることができます。
それを実現するためのPackageです。
この角丸は普通の角丸に比べて計算量が多いためパフォーマンス点で懸念があります。(個人開発で使ってみましたが目に見えるパフォーマンス劣化はありませんでした)
この点を解消すべくFlutter公式が開発中だそうです。
shimmer
最高の"待ち時間"(スケルトンUI) スケルトンUI(グレーのローディング)を実装する時に使えるpackageです。
スケルトンUIには体感の読み込み時間を短くさせるだけではなく、うまくデザインできればレイアウトシフトを防ぐこともできます。
積極的に取り入れていくことを検討してみましょう。
haptic_feedback
楽しい印象を与えるHaptics 個人的にはHaptics Feedback(押した時に振動するフィードバック)があるアプリは触っていて楽しいと感じます。
Flutter標準でもHapticFeedback.mediumImpact();
のように使えますが、このpackageを使えば特殊な条件下でのHapticsや、Hapticsの鋭さを変えられます
// 特殊な条件下(失敗・警告・エラー)
await Haptics.vibrate(HapticsType.success);
await Haptics.vibrate(HapticsType.warning);
await Haptics.vibrate(HapticsType.error);
// 鋭さ
await Haptics.vibrate(HapticsType.rigid);
await Haptics.vibrate(HapticsType.soft);
swipeable_page_route
画面のどこでもスワイプバックできるようにする 本来、スワイプバックは画面の左端でしかできません。
端末の左端は意外と届きづらくストレスを感じることもあります。
swipeable_page_route
を使えば、X(Twitter)やSlackのアプリのように画面どこでもスワイプバックできるようにします。
sprung
リアル世界に近いアニメーション アニメーションをこだわり始めるとSpringアニメーションにたどり着きます。
これはバネのような動きを実現するもので、バネとは初速、バネ係数、質量などによって動きが変わってきます。
簡単にいうと、より現実的な世界に近いアニメーションを表現することでユーザーにとって自然なインタラクションを提供できます。
FlutterではSpringSimulationを使うことで実現できます。
しかしAnimationController
を使わないといけなのでAnimatedContainer
などのImplicit系と相性が悪いのです。
sprung
を使えばSpringアニメーションを手軽に使えます。
実はこちらは実際の開発で使ったことはなく、いつか使いたいなと思っています。(Springアニメーション自体は取り入れていますが)
ぜひ使ったことある方がいれば使い心地を教えてください!
責任を持って使おう
今回紹介したPackageはもちろん、UI系のPackage全てに当てはまることは、パフォーマンスに注意することです。
dev toolで確認したり、内部の実装を読んだ上で使うことをお勧めしています。
内部実装を読むことで勉強にもなりますね!
みなさんはどんなpackageがお気に入りですか?
他にも良いPackageはたくさんあると思います。
ぜひコメントで教えてください!
自分の方で試して良いなと思ったら記事に追記させていただきます!
また、使ってみたいと思うPackageがあったらぜひいいね❤️をお願いします!
次の記事へのモチベーションにつながります。
ユーザー体験こだわりたい方、こちらもどうぞ。
最近、「技術視点で深掘るUI/UX入門」という本をZennで出版しました!
この記事で紹介しているPackageなども紹介しています。
ぜひ手を取っていただけると嬉しいです。
ユーザー体験をより良くする方法を技術視点で深ぼった記事を書いています。
またZennやX(Twitter)のフォローをお願いします。

株式会社SODAの開発組織がお届けするZenn Publicationです。 是非Entrance Bookもご覧ください! → recruit.soda-inc.jp/engineer
Discussion