はじめに
友人から「ホーム画面のウィジェットでタイムラップを記録できるストップウォッチみたいなアプリが欲しい」と言われたので1人月ほどで作成してみました。Flutter初心者です。
最初はReact Nativeで作成しようと思いましたが、「CSSの設定がOSによって違いすぎる」「求めているライブラリが少なすぎる」などの理由で今回は「ライブラリが多そう」、「ネイティブよりは早く実装できそう」という理由でFlutterで作成しました。
※React Nativeのほうがビルド。ホットリロードなどの観点から見れば良かったです。Expoすごく便利。Flutterでも使えるようにしてほしい。
今回作ったアプリはこんな感じです。
ウィジェットに記録した時間を一覧で確認,編集ができる かつ 統計情報を管理できるアプリです。
作成はしたものの、次回改修するときに絶対諸々忘れそうなので、備忘録がてら、作成に当たり利用したサイト。ライブラリをざっくり書き出していきます。
※Flutterライブラリ[home_widget]は利用していません。widget自体の処理はネイティブで実装して、データのやり取りはmethod channel利用してFlutter側で処理しています。
【サイト】
pub.dev
Flutter 公式ライブラリリポジトリ。
ライブラリを探すときは基本ここで探す。
ただし、ここに書いている情報が全てではないので、githubを見るなり、Qiita記事を読みながら実装していく。
flutter awesome
Flutterに関するライブラリ、ツールなどをまとめたサイト。
ライブラリだけでなく、仕様などの記事も掲載されているので近況を確認しやすい。
flutter gems
Flutterライブラリのカテゴリー別インデックスサイト。
pub.devで探しにくい場合に役立つ。
各ライブラリのサンプル画像がカテゴリ別に確認できるため、非常に利用しやすい。
【ライブラリ】
icons_plus
様々なアイコンを提供するライブラリ。
アイコンに統一感が欲しかったので、ライブラリでテーマ管理。
modal_bottom_sheet
ボトムシートを簡単に表示できるライブラリ。
標準のものよりはこっちのほうが使いやすく、改修しやすと記載があったので、こちらを採用。
何が使いやすいかはあまり深く考えず、利用してます。
hive
軽量なNoSQLデータベース。
データベースと入っているが、DB領域ではなくSharedPreferencesに登録されるらしい。
設定項目などはhive形式で管理するのが良さそう。
データを蓄積して表示する系のものには向いてない。
fl_chart
グラフを描画するためのライブラリ。
Flutterでグラフを表示するならこれが一番いい。
折れ線、円、線形など様々なグラフに対応していてUIもアニメーションがデフォルトで動作するから見栄えがすごくいい。
Drift
永続化のためのORMライブラリ。
AndroidでいうところのRoom DB。
FlutterでORMを利用するならDrift一択なのかもしれない。
SQ Liteも存在はするが、個人的にはSQLを書きたくはないのでDB利用するのならDrift一択。
drift_flutter
DriftをFlutterで利用するためのライブラリ。
実はDriftだけでは動かない。
他にsqlite3_flutter_libs, path_provider, path, drift_dev, build_runnerも必要になる。
こちらの方の記事が参考になりましたので、利用する場合はこちらご残照ください。
https://qiita.com/team7_403_poppin/items/b6eb8a15ef716834f2e5
sqlite3_flutter_libs
sqlite3を利用するために必要なライブラリ。
Drift用
path_provider
デバイスのファイルシステム上の一般的なディレクトリへのパスを取得するためのライブラリ。
Drift用
path
パス操作を簡潔にするライブラリ。
Drift用
card_swiper
カード型のスワイプUIを提供するライブラリ。
スワイパー系のライブラリで一番早く爆速で実装できた。
いい感じに横並びさせたいときはこれを使うと良き。
intl
多言語化のためのライブラリ。
言語というより、今回はDatetime型を利用するために導入。
slide_switcher
スライド式のスイッチUIを提供するライブラリ。
tabほどではないが、ボダンを切り替えて表示する系のUIとして便利。
このライブラリはpub.devでは見つけられなくてflutter gemsで発見した。
最後に
Androidの知識があったのでなんとか作成にこじつけることができましたが、かなり大変と感じました。
あと、作成にはAIアシスタントガッツリ利用しました。
知見のない言語で開発するときに大変頼りになる存在です。もうAIアシスタント無しでは開発無理と言っても過言でないかもしれない…
Gemini以外でも無料でAIアシスタント使えるようにしてほしいと願望をこぼしておきます。
最後に、コミケアプリとか作ってみたい…(言うだけならタダ)