在需要来自Screen2(使用StreamBuilder)的参数数据时,从任何屏幕导航到Screen3

时间:2019-04-08 09:20:14

标签: flutter flutter-layout flutter-dependencies

请考虑以下结构:

Screen1 -> Screen2 -> Screen3

Screen2的{​​{1}}通过StreamBuilder连接到Firestore,其中显示了聊天列表。如果用户单击聊天,则会打开相应的群聊。因此,ListView.builderScreen2提供了很多参数,例如groupId,groupName,groupImage等,以使用其所有数据打开正确的聊天。

我现在想导航到Screen3的特定聊天,比方说一次单击(是,在推送通知中)groupId 22233313的聊天。我有groupId,但是首先我需要以某种方式从Screen3(从Screen2中获取数据),否则会得到很多空值。

我可以以某种方式打开StreamBuilder,自动单击带有相应groupId的聊天以转到Screen3还是您有更好的主意?

1 个答案:

答案 0 :(得分:0)

  1. 我认为您不应让FireStore数据依赖于屏幕。
  2. 制作一个存储库类来保存您的数据。
  3. 收到数据后,将其传递到存储库类。
  4. 打开屏幕3时,仅通过屏幕2中的groupId。
  5. 使用groupId从存储库访问数据。
  6. 类似的结构将在您收到通知时为您工作。

我建议您使用BLoC模式执行此操作。