RealTimeDB対応に向けて苦労 – 開発日記(62)

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」


コメント

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