【问题标题】:StreamBuilder showing data only on hot reload in flutterStreamBuilder 仅在颤动中显示热重载时的数据
【发布时间】:2021-10-09 07:15:46
【问题描述】:

我遇到了 Streambuilder 的问题。 我的应用程序的工作流程就像有一个项目列表,当我按下添加到收藏夹时,它会将项目添加到 Firestore。然后我使用流从firestore中获取数据并使用流生成器在另一个屏幕上显示它。 问题是当我热重新加载应用程序时流生成器是空的,数据显示完美。 this is the part where I am calling stream method this is streambuilder 谢谢。

【问题讨论】:

  • 你能提供你的代码吗?
  • 请添加您的代码以从 firestore 获取数据。
  • 我添加了部分代码,请检查编辑部分。

标签: flutter google-cloud-firestore async-await stream-builder


【解决方案1】:

尝试删除额外的变量resultStream 并直接在StreamBuilder 中使用函数DatabaseManager.getUserCurrency(),如下所示:

StreamBuilder(
   stream: DatabaseManager.getUserCurrency(context),
   builder: (context, snapshot){...}
)

如果这不能解决问题,请检查您的 getUserCurrency() 函数是否有错误。这是从 Firestore 获取 Stream 的示例:

Stream<UserData> getUserData(String uid) {
  try {
    return userCollection
        .doc(uid)
        .snapshots()
        .map((event) => event?.data() != null ? UserData.fromMap(event.data()) : null);
  } catch (e) {
    print(e);
    return null;
  }
}

此外,您通常不必等待 Stream,这可能会导致您遇到问题,因为您在 initState 中调用异步函数。

【讨论】:

  • 第一种方法对我有用。如果我直接使用该方法,而不是使用变量,一切正常。非常感谢您花时间解决问题并提供多种解决方案
猜你喜欢
  • 1970-01-01
  • 2019-05-30
  • 2020-04-19
  • 2021-10-27
  • 2020-07-28
  • 1970-01-01
  • 2020-03-01
  • 2021-02-06
  • 2021-04-10
相关资源
最近更新 更多