私は Flutter に関するいくつかのチュートリアルを調べましたが、それらは基本をうまくカバーしていることがわかりましたが、優れた設計と優れたアーキテクチャには常に欠けている厄介な側面がいくつかあります。Flutter で最初の実際の (おもちゃではない) アプリケーションを作成していて、これらの欠けている点に遭遇しました。
グローバル データ。ある人がアプリケーションをインストールして使用しようとすると、ログインしてアカウントを作成するように依頼します。これは、特に人々のグループを管理するためのアプリケーションだからです。私はバックエンドで Firebase を使用しています。認証を行うパッケージは、すべてから Future<FirebaseUser> を返します。そうです、ユーザーのデータを使用するウィジェットを作成する場合は、FutureBuilderを使用できます。. そうは言っても、ユーザーの ID を使用してデータを検索するすべての場所でユーザーを逆参照する定型的な FutureBuilder コードを入力し続ける必要があるのは奇妙に思えます (どのグループに属しているか、保留中のアクションは何かなど)。 . 未来を呼び出し、実際のユーザー オブジェクトを取得し、それをどこかに保存して、クエリのユーザー ID を必要とするすべての人がそれを取得できるようにする方法が必要だと本当に感じています。正しい解決策は何ですか?この問題を抱えているのは私だけだとは信じられません。
更新可能なデータ。現在のユーザーがメンバーであるグループを一覧表示するページがあります。ただし、ユーザーは新しいグループを作成したり、既存のグループに参加したり、グループから脱退したりできます。彼らがそうするとき、私はページを再描画する必要があります。グループのリストは Firebase クエリの実行から取得されるため、アクション (参加、脱退など) を実行すると、ページを再描画するようにアプリに通知され、クエリを再実行するという副作用があります。考えられるのは、ページをクエリ結果に (どのように) 依存させ、更新するたびにページを再描画させ、代わりにクエリを追跡するウィジェットをどこかに配置することです。別の答えがありますここでは、これが正しい方法である可能性があることを示唆していますが、これは比較的不変なデータ (1 人のユーザーのロケールはそれほど頻繁に変更されません) に本当に関係しています。繰り返しになりますが、この種のことをしているのは私だけだとは信じられません。この場合のベストプラクティスは何ですか?