Open12

Flutterで日記アプリを作ろう

はじめに

会話メモアプリを作ってて、少し作り方がまとまってきたから、かんたんなものを最初から作り直してみよう、そんな動機です。

やっぱり、かんたん、といえば日記アプリでしょう?

こんなアプリ

日記の一覧、編集画面があって…
日記には画像を一枚添付できる感じ。

データの保存方法

  • 日記はSQLiteに保存 サンプル通りにDBを初期化しようとしてうまくいかなかった…。不安定な部分もありそうなので、やめる…。ObjectBoxにしてみようかな…。
  • 添付画像はアプリケーションのドキュメントディレクトリに年/月/日.png のように保存

CI

flutterはバージョンが頻繁に上がるし、自分も大きな変更をしたときに何処かが壊れることに気づけると助かるので、やっぱりCIは入れておきたい。

いくつかサービスがありそうだけど、flutter公式が採用しているCirrus CIがとりあえず安心そう。

  • flutter向けドキュメント https://cirrus-ci.org/examples/#flutter
    • 設定例でコンテナのバージョンがlatestになってるけど…アップデートが頻繁で面倒なので、ベストプラクティスかも。
    • 困ったらバージョン指定して、直したら戻す運用でよさそう。
    • 例の通りに記述してもダメだった…。

静的解析

初心者の自分がイマイチな書き方で放置しないようにするのにとても有用だと思っています。

https://github.com/ken1flan/f_diary/pull/1

main.dartからwidget部分を分割

一個のファイルに全部書くのは、一度に考える範囲がめちゃくちゃ広がってしまってしんどいので、分割します。

https://github.com/ken1flan/f_diary/pull/2

アプリケーションのベースになる画面を作成

  • 将来的に日記エントリの一覧になる予定
  • タイトルとアクションボタンがついてる。

タイトルの変更

アイコンの変更

https://api.flutter.dev/flutter/material/Icons-class.html

カウントアップ削除とステートレス化

ボタンを押すとカウントアップするようになってますが、当然不要なので取り払います。
それによって、状態が不要になるのでステートレスウィジェットに変更します。

https://github.com/ken1flan/f_diary/pull/3
https://github.com/ken1flan/f_diary/pull/4

sqfliteを使おうとしたら、なぜかデータベースのオープンもできなかった…。
疲れ切ったので、別のを探していました。

ObjectBox

ObjectBoxはモバイルデバイスやIoT機器のためのNoSQLデータベース。
ObjectBox Syncでサーバとの同期もあるようなので、案外よさそうな雰囲気。Firebaseの対抗馬?
Dart/Flutter以外にもJava、Kotolin、Swift用のライブラリもある模様。
会社化されているっぽい。

https://objectbox.io/
https://pub.dev/packages/objectbox

ああ…うまくできてなかった、sqfliteのほうもWidgetsFlutterBinding.ensureInitialized();を入れたらうまくいった…。
main() はflutterの実行開始位置ではなくて、dartのものなんだというのが唐突にわかった。そりゃ動かないよなぁ…。

sqfliteに戻ろうかなぁ…悩む…。

sqfliteで実装中…。

しかし、hivedbがラクすぎて、そっちに逃げたくなる…。
Navigatorで戻るやったら、リスト更新してくれなくて泣いてる><

ログインするとコメントできます