2023/10/29
Firebase FireStoreからFirebase RealTime Databaseへの移行に向けた実装を続ける。
DBへの書き込み側の処理はそれなりに進捗があった。
読み込み側も少し実装できはじめている。RealtimeDBの値が変更されたとき、Provider/Notificationsにてウィジェットの表示に反映するという挙動が一部動きだした。
基本的にはうまく動いていたが、アイディアが画面外に移動したあと再度画面内に入ったとき(レーン内のアイディアが多いときにスクロールアウトした場合)
Unhandled Exception: A {YourModel} was used after being disposed.
が出て苦しんだ。
下記の記事のおかげでなんとか解決できたが(本当に感謝)、まだまだ色々な事がよく分かっていないなぁとあらてめて感じる。
【Flutter】ChangeNotifierProvider.valueを使って一回作ったmodelを使い回すためのメモ
2023/10/30
引き続きRealTimeDBへの移行に向けた実装。
Model/Widgetを分離するリファクタを行いながら、かつRealTimeDBの扱いが初めてなのもあって、なかなか時間がかかる。
2023/10/31
引き続きRealTimeDBへの移行に向けた実装。
今回のリファクタで知ったのだが、コンストラクタでは実は await ができない(効かない)。これはつらい。元々考えていた書き方ができないので美しくない。本来はオブジェクト自身がDBを読みに行って自身を定義したかったのだが……。
色々調べたがFlutterのClassからオブジェクト(インスタンス)を作る際、そのオブジェクト自身がDBの値を取りに行く(つまりClassのコンストラクタでDBの値を取る)方法は分からなかった。
仕方がないので以下どちらかの方法でやるしか無い。
- 先にDBの値を読んでおいて、その情報を渡してオブジェクトを作る
- オブジェクトを仮に作り、その後そのオブジェクトのメソッドを呼び出してDBの値を読み込む
2023/11/01
ついに11月になってしまった……。
引き続きRealTimeDBへの移行に向けた実装。
2023/11/02
引き続きRealTimeDBへの移行に向けた実装。
2023/11/03
引き続きRealTimeDBへの移行に向けた実装。
Model/Widgetの分離はそれなりに進んだ。でも当初考えていた書き方が出来ないのであまり美しくない。
2023/11/04
引き続きRealTimeDBへの移行に向けた実装。
だいぶソースはポンコツだし描画回数も多い(ちらつく)が、新しいモデルでも辛うじて動くようになってきた。
2023/11/05
引き続きRealTimeDBへの移行に向けた実装。
なんとなく動くがぐちゃぐちゃだ。当初思ったような書き方ができなかったことで、色々と崩れてしまった。
進んではいるものの、時間がかかりすぎている。「混乱と遅れが生じている」というやつか。
2023/11/06
引き続きRealTimeDBへの移行に向けた実装。
あまりにソースがぐちゃぐちゃ、動作もぐちゃぐちゃになってきたので、非同期ではなくいったん”同期的”に書いてみる。そうするとそれなりに動く。
しかし非同期で動かそうとすると、元のソースがまだまだぐちゃぐちゃなのでなかなか難しい……。
いきなりではなく、徐々に移行していく方が良さそうだ。
※開発日記は当時の記録をもとに作成し、必要に応じて加筆・補足しています
この記事はアイディア整理ソフト「idea Lane」の開発記録です
↓どなたでも、ユーザ登録だけで無料ですぐに使えます↓
テキストベースの思考整理ツール「idea Lane」
コメント