Flutterでうちで飲んだお酒をメモするアプリを作ろう
ここ2年くらい、うちでお酒を飲むようになったのですが、のんだお酒、いつも「うめー」で終わってました。
ただ期間が長くなるに従って、前に飲んだこのお酒、これどんな感想を持ったっけな?と思うことがでてきました。
このアプリはがんばらずにお酒のメモを残すためのアプリです。
がんばって残すアプリはもっと便利なものがあるし、みんなと交流できるWebサービスもあるので、あくまでもこのアプリはシンプルに、です。
一回で数種類飲める酒豪向きではないかも。
まずはflutterアプリを生成、その後CI(静的解析、テスト、android用apkビルド)設定をしました。
日記アプリではcirrus ci使ってましたが、今回はgithub actionsです。
参考
- Software Design 2022年4月号 はじめてのFlutter 第5章
そうだ、最初、main.dartに全部書かれていたのでした…。
複数のファイルに分けて管理するのにどうやるんだったか、結構探し回ったことを思い出しました。
テストの前提条件とか整備するのは…もっとあとでよかったので、マージはあとかな…。
キーワードをカンマ区切りじゃなくてかっこよくしたいと思ってたら、よさそうな記事が…
単純なコントロールのものだけ配置した、メモページを作成しました。
Google Analytics使えんの…?
かなりGoogleべったり感…。使わなきゃいいかー。
DartでプロセスID取れる!
テストの並列実行時にデータベースの保存ディレクトリをバラけさせられそう。
ようやくIsarをインストールして、テストが正常終了するようにできました。
f_diaryでやってたときにテストを並列で実行できなかったのですが、アプリのディレクトリをプロセスIDごとに分けることで並列にできるようになりました。
applicationDocumentsDirectory = Directory("${Directory.current.path}/tmp/$pid");
一部書きにくい処理をヘルパー関数として切り出しました。
(日付なんて国際化すればいいんだけど、ちょっと面倒だったので…。)
一覧表示のテストをサボっていたので追加しました。
編集画面でメモを保存できるようにしました。
削除できるようにしました。
画像ファイルを添付できるようにしました。
IsarはConverterで入出力時にいろいろできるので、大変便利…!
テーマカラーをお酒の印象を変えてしまわなそうなグレーに変更しました。
flutter_launcher_iconsを設定しようとして詰まった><
~/src/uchi_sake[Add_icon(≧∇≦)b OK]
09:06 $ flutter pub run flutter_launcher_icons:main
════════════════════════════════════════════
FLUTTER LAUNCHER ICONS (v0.9.1)
════════════════════════════════════════════
✓ Successfully generated launcher icons
Unhandled exception:
FormatException: Invalid number (at character 1)
^
#0 int._handleFormatError (dart:core-patch/integers_patch.dart:129:7)
#1 int.parse (dart:core-patch/integers_patch.dart:55:14)
#2 minSdk (package:flutter_launcher_icons/android.dart:309:18)
#3 createIconsFromConfig (package:flutter_launcher_icons/main.dart:94:47)
#4 createIconsFromArguments (package:flutter_launcher_icons/main.dart:60:7)
#5 main (file:///usr/local/Caskroom/flutter/2.10.1/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_launcher_icons-0.9.2/bin/main.dart:6:26)
#6 _delayEntrypointInvocation.<anonymous closure> (dart:isolate-patch/isolate_patch.dart:295:32)
#7 _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:192:12)
pub finished with exit code 255
~/src/uchi_sake[Add_icon(;´▽`A]
build.gradle
のminSdkVersion
のParseに失敗しているっぽい。
f_diaryではここは16となっていて、こっちはうまくいっている模様…。
flutter.minSdkVersion
をParseできてないような…。
同じ状況で困ってる人いました。
具体的なバージョンを書くことで回避しました。
デフォルトのアイコンをオリジナルのものにし、
スプラッシュを追加しました。
flutter_rating_barで評価値を入れられるようにします。
次は写真の拡縮かなぁ…。
裏ラベル読みたいですもん。
思った以上に簡単でした。
キーワード…というか、タグを登録できるようにします。
いろいろ探したけれど、textfield_tagsが一番近そうでした。
textfield_tags のサンプルコード、めっちゃ長い…。
こんな複雑なものを内包するのがイヤになってきた。
このままにしておこうと思います…。