RealTime Database対応に備えてWidgetとモデルを分離 – 開発日記(60)

2023/10/18

めずらしく5日間開発期間が空いた。
このところプライベートの用事や耳鳴り問題のため、まともに進めなかった。

FireStoreからRealTimeDBへの移行に向けた検討の続き。

DB・モデル・UIをどのような関係性や構造にするかの実験用モジュールの画像。これまでのソースと別に作っているが色々と雑……。

2023/10/19

引き続き、RealTimeDBへの移行に向けた検討。

これまでは実験用モジュールで試していたが、いよいよ本体(IdeaLane)側のリファクタを開始した。

WebだけでなくWindowsでも、RealTimeDBで基本的な読み書きができることを確認した。

2023/10/20

引き続きRealTimeDBへの移行に向けた検討。本体(IdeaLane)側のリファクタを実施。

2024/10/21

RealTimeDBへの移行に向けた実装。今日も本体(IdeaLane)側のリファクタを実施。

Widgetとモデルの分離

  • これまで何でもかんでもStatefulWidgetのState上で処理をしがちだったが、Widgetの描画とmodelを少しずつ分離している。
  • モデルで情報を管理してウィジェットでその情報を元に描画する。一見当たり前に見えるが、少しずつその形に近づいてきた。(これまでのソースが大量にあるのでまだきれいな形には程遠いが)

ウィジェットのレイアウト方式の変更

  • 画面にウィジェットを配置する際、これまではAlignやCenterやRowといったウィジェットを頑張って使っていた。しかしアイディアレーンの各要素の配置や描画は、ここまで複雑になってくるとむしろ座標を指定した方が制御しやすい。
  • そこでキャンバス内の要素の描画スタイルを原則Stack&Positionに変える形でかなり手を入れている。ちなみにStackを重ねまくってみたがパフォーマンス的に気になるような状況になっていない印象。
  • キャンバス用Stack、レーン用(エリア用)Stack、アイディア用Stack、リレーション用Stackといった感じでStackを入れ子で管理するような状態にして、各要素はPositionで座標を直接指定して描画するようにしたら、とてもやりやすくなってきた。

リファクタリングしながら、不具合周りも見つけたものは対応している。

2023/10/22

RealTimeDBへの移行に向けた実装。本体(IdeaLane)側のリファクタ。

相当いじったがだいたいこれまで通りの動きが出来ている。
ただ、リファクタで思ったような形に持って行くまでには完全作り直しに近くなってしまうので、集中的な実施はこのあたりで一旦ペースダウンの予定。あとは今後少しずつという感じ。

Realtime Databaseでも、以前のFireStoreと同じ挙動が出来るようになった


※開発日記は当時の記録をもとに作成し、必要に応じて加筆・補足しています

この記事はアイディア整理ソフト「idea Lane」の開発記録です

どなたでも、ユーザ登録だけで無料ですぐに使えます
テキストベースの思考整理ツール「idea Lane」


コメント

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