わたすけです。
タイトル通り,簡易所持金管理アプリ,「ExpNote」をリリースしました!!
Flutter製のAndroidアプリとなっております。
今回はこのアプリについていろいろ書いていこうと思います。
何だこのアプリ
改めて,「ExpNote」は,Flutterの学習用につくった,簡易的な所持金管理アプリとなっています。Android専用です。
ちなみにGitHubでソースコードが公開されています。ビルドさえすればiOSやデスクトップでも使用可能になるはずです。
できること
- 出費・収入などの管理
- カレンダーで選択した日付別のイベント表示
未実装項目(将来対応予定)
- 設定画面
- 一部アニメーション
- インポート・エクスポート
インストール方法
まず,お手元のAndroidスマートフォンでこのページに飛び,最新のリリースを見つけます。
そこからapkをダウンロードして開き,インストールするだけです。
簡単で
す!!!!
iOS版はmacOSが手元にないので作れませんでした・・・(そもそもストアに出さないとインストールできないので無理です)
使い方
何か出費や収入があった時には,「イベント」を追加します。
まず,アプリをひらいた直後の画面から,右下の+ボタンを押し,イベント追加ページに移動します。
次に,日付,タイトル,変動金額,詳細やメモ(空欄でも可)を記入します。
入力が完了したら,右上のチェックボタンを押せば,追加が完了します。
また,イベント一覧画面(最初の画面)で,イベントをタップするとそのイベントの詳細を見たり,編集したり,イベントを削除したりすることができます。
Flutter開発で躓いたこと
FlutterはDartという言語を使ってレイアウトから処理までを記述します。ということで,躓いたことのほとんどがDartの言語仕様によるものですがまあFlutter開発でひとまとめにしておきます。
int同士の割り算
C言語ではint x=3, y=2; としたとき,x/y (3/2) の答えは1となります。3/2は1.5ですが,変数がint型であるため,小数点以下は切り捨てられるという原理です。
しかし,Dartではそれが出来ず,int同士の計算でも割り算の答えはdouble型になるらしく,エラーを吐いて止まってしまいます。
整数の除算をする場合は~/を使わないといけないらしいです。
クラス名について
クラス名やメソッド名(用語あってるのかな)の最初にアンダーバーを付けると,外部から参照できなくなります。
C言語の気分で_classNameみたいな名前を付けたクラスを別ファイルに記述し,importを用いて使おうとして使えず戸惑っていました。気をつけましょう
nullかどうかを確かめる
結構いろいろな部分でオブジェクトがnullになってエラーを吐いてしまうことがありました。
int x = y??0;とすると,yがnullだった場合にxに0を代入することが出来るので,これを使ってnull対処を行いました。
クラスを作ったらnewで初期化
classNameクラスがあったら,className c=className(); のように初期化しないとnullになってしまうようです。
結構忘れがちなので注意。
Arch LinuxにおけるAndroidエミュレータの作成
Arch Linuxの素晴らしきAURからさっくりAndroid Studioをインストールしたはいいものの,sdkmanagerがエラーを吐いて使えず,Androidエミュレータが動作しなくてかなり不便でした。
sdkmanagerを正常動作させるために,sdkmanagerを起動する時は以下のようなコマンドを使用します。ちなみに$はいらないです。
$ JAVA_HOME=/opt/android-studio/jre/ sdkmanager
おわりに
ということで,初めてFlutterを使ってAndroidアプリを制作したという話でした。
Dartでレイアウトを作るとインデントがかなり深くなるし,そうでなくても全体的にかなり複雑なコードになってしまうので,そのあたりはなんとかならないかなぁと思いました。ただし,コーディング規約をしっかり定めてない自分のせいもあるとは思いました。Flutter全くわからない状態から作り始めたので,次はちゃんと一貫性のあるコードを書きたいです。
コードは複雑になるものの手軽に,それっぽいデザインのUIを作ることが出来るFlutterはなかなか優秀だなぁと思いました。
コメント