StreamBuilder 仅在 flutter 热重载时显示数据
StreamBuilder showing data only on hot reload in flutter
我遇到了 Streambuilder 的问题。
我的应用程序的工作流程就像有一个项目列表,当我按下添加到收藏夹时它会将项目添加到 firestore。然后我使用流从 firestore 获取数据并使用流生成器将其显示在另一个屏幕上。
问题是当我热重载数据完美显示的应用程序时,流构建器是空的。
this is the part where I am calling stream method
this is streambuilder
谢谢
尝试删除额外的变量 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
.
中调用异步函数
我遇到了 Streambuilder 的问题。 我的应用程序的工作流程就像有一个项目列表,当我按下添加到收藏夹时它会将项目添加到 firestore。然后我使用流从 firestore 获取数据并使用流生成器将其显示在另一个屏幕上。 问题是当我热重载数据完美显示的应用程序时,流构建器是空的。 this is the part where I am calling stream method this is streambuilder 谢谢
尝试删除额外的变量 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
.