Flutter-タイマーアプリケーションを作ってみる1

なんとなくAndroidアプリを作ってみたくなったので、今、とてもほしいと思っていたタイマーアプリを作ってみた。

ソフトは一応完了しているのだけど、その過程や、手こずったところなどを記述していきたい。

GitHub - take4blue/stacktimers
Contribute to take4blue/stacktimers development by creating an account on GitHub.

まずは仕様みたいなもの。

タイマーアプリ要望内容

料理をするのにキッチンタイマー・もしくはスマホのタイマーを利用しているんだけど、以下の点に不満を持ってる。

  1. 「停止」を押さないとアラームが止まらない。
    音が鳴れば時間が来たと分かるので、わざわざ止めるなんて面倒なんだよな。
    あと使ってるキッチンタイマー、微妙にボタンの反応が鈍いので。
  2. 連続したタイマーアラームを設定したい。
    料理をするのに、沸騰してから何分、中火で何分、止めてから何分、というようにタイマーを連続して使うのが多いのだけど、手持ちのだとそういう機能のがない。
  3. タイマーを用途ごとに覚えておきたい。

こんな希望を叶えるものを作ってみようと思った。

仕様みたいなもの

画面構成

とりあえず、フリーハンドでポンチ絵をかいてみた。
トップがトップ画面、左がタイマー実行画面、右がタイマー編集画面。

トップ画面で「連続タイマー」を複数管理できるようにしている。
そこはList Tileあたりを使うのかな。そこからタイマー開始、タイマー編集などを選択できるようにする。

展開する画面としては、タイマー実行画面(左下)と、タイマー編集画面(右下)。

タイマー実行画面は、登録されている連続タイマーを実行し、経過時間を表示できるようにするのと、タイマー操作をできるようにしている。

タイマー編集画面では、連続したタイマー時間の設定を行う。タイマー時間で設定可能な属性としては、時間、アラーム音→発音時間、色(タイマー実行画面で使用)。このタイマー属性を複数設定できるようにする。
属性の削除はスワイプ+削除ボタン、属性の上下移動はリオーダーで可能とする。
時間の設定とアラームの設定はドラムダイアログで、色は色選択ダイアログで行う。

  • 初期段階の構想は上のような感じだったのけど、途中で音のユーザー選択が面倒だということが分かり、アラーム音からアラームを出している時間(発音時間)に変更している。
    こういうのは、利用可能な機能などを知っていないと、設計初期段階で機能を盛り込めないんで、後での設計変更が大変になる。
    実際、今回大変だった。

DB

格納するデータはsqliteに保存するようにする。

画面から見て取れるデータをもとにDBをとりあえず以下の様に考えてみた。

TitleTable

タイマーにつけるタイトル名を格納するテーブル。

名前 説明
id INTEGER 一意な番号(自動採番)
sTitle TEXT タイトル名

TimeTable

sTitileに紐づけるタイマー(複数)の情報

名前 説明
id INTEGER 一意な番号(自動採番)
titleid INTEGER TitleTable-idを示す
iNo INTEGER 同一titleid内での順序(0オリジン)
iTime INTEGER タイマー時間(単位:秒)
iAlarm INTEGER 警告音の種類
iDuration INTEGER 警告音の発音時間(単位:ミリ秒)
iColor INTEGER 色(RGB)
  • iAlarmは初期段階では入れてたんだけど、仕様変更で外したもの。

コメント

タイトルとURLをコピーしました