[Flutter]サイクルコンピューターことサイコンを作ってみた[未完]
サイコンをご存知ですか?
サイコンとはこんなやつ↓です
時速だとか諸々表示してくれるロードバイクの走行に持っていると非常に助かるアイテムです。
自分は持っていません。というかうまく設置できません。というのもサイコンの代わりにスマホを設置しているからです。
なのでFlutterで作りました。
- 言語: Flutter
- 状態管理: BloC
- 位置情報: Geolocator
こんな感じです

まだまだ追加したいものもあるし、なんなら作ったばっかりで使えてない...
Flutter自体は触ったのは初めてではないですがあまり勝手がわかりません。なので色々GPT4さんに聞いて実装しました。
今回はBlocパターンを使った実装をやってみました。初めて聞きましたが要は、
- EventをStreamで状態管理のクラスへ
- 状態管理クラスはEventから新しく状態を生成
- UIへStreamで状態を伝える
っていうことらしいです。(間違ってたらごめんなさい)
位置情報や諸々はGeolocatorを使って取得しているのですが、現在これにはちょっと問題が発生していて

この画像のようにStreamを開始すると速度の値が-1(時速変換するために3.6をかけている)になってしまいます。希望としては0になっていて欲しいのですが...
この現象をGPT4に聞くとこんな返答が
Geolocatorが取得する速度についての公式ドキュメントには次のように書かれています:
"Returns the speed at which the device is traveling in meters per second over ground. When the device is not moving, this value can wildly fluctuate, therefore, do not rely on this value for determining if the device is currently moving. Also note that this does not return the speed relative to the air (i.e., it can be significantly different if the device is in an airplane). Returns -1 if the speed is not available."
公式のドキュメントを探してもこのような文言は見つけられませんでした...。これに関する原因はまだ分からずなので近いうちに直せたらなと。またBlocパターンは近いうちにちゃんとまとめればと思います。それでは今回はこんな感じで。またちょくちょく更新していきたいと思います。それでは。