FlutterFire Firestore 2.0.0 与流式集合的迁移问题 [重复]
Posted
技术标签:
【中文标题】FlutterFire Firestore 2.0.0 与流式集合的迁移问题 [重复]【英文标题】:FlutterFire Firestore 2.0.0 migration issues with streaming collections [duplicate] 【发布时间】:2021-08-09 06:10:02 【问题描述】:在尝试运行我的应用程序时,此代码块会导致以下错误。 migration guide 让我不知道将 Map<String, dynamic>? data
更改为什么?
Stream<List<T>> collectionStream<T>(
required String path,
required T Function(Map<String, dynamic>? data, String documentID) builder,
Query? Function(Query query)? queryBuilder,
int Function(T lhs, T rhs)? sort,
)
Query query = FirebaseFirestore.instance.collection(path);
if (queryBuilder != null)
query = queryBuilder(query)!;
final Stream<QuerySnapshot> snapshots = query.snapshots();
return snapshots.map((snapshot)
final result = snapshot.docs
.map((snapshot) => builder(snapshot.data(), snapshot.id))
.where((value) => value != null)
.toList();
if (sort != null)
result.sort(sort);
return result;
);
错误:参数类型“对象?”不能分配给参数类型'Map
“对象”来自“dart:core”。 “地图”来自“飞镖:核心”。 .map((snapshot) => builder(snapshot.data(), snapshot.id))?'。
编辑:
如果我使用 final Stream<QuerySnapshot<Map<String, dynamic>>> snapshots = query.snapshots();
更新 QuerySnapshot,我现在会收到以下错误。
【问题讨论】:
查看***.com/questions/67610111/… @PeterHaddad 我看过那篇文章,但我没有找到解决我的 Stream QuerySnapshot 问题的方法。请参阅下面我对 Victor Eronmosele 的评论。如何让query.snapshots()
返回地图?
和我在回答中解释的一样..
对不起,如果它在我面前,我看不到它。如果您愿意,请提供特定于我的用例的代码答案。另外,请注意,我刚刚在我的原始帖子中添加了一个编辑,其中包含我所做的更新和我现在遇到的问题。
检查副本,并根据您的用例进行更新。当你尝试它时告诉我是否一切正常,谢谢!
【参考方案1】:
您需要指定 QuerySnapshot 中包含的对象类型,如下所示:
final Stream<QuerySnapshot<Map<String, dynamic>>> snapshots =
query.snapshots() as Stream<QuerySnapshot<Map<String, dynamic>>>;
Migration Guide
【讨论】:
这几乎可以让我到达那里,但是query.snapshots()
有红色下划线并且这个错误:Stream<QuerySnapshot<Object?>>
类型的值不能分配给Stream<QuerySnapshot<Map<String, dynamic>>>
类型的变量如果我更改为 Object这打破了所有寻找地图的功能。如何让query.snapshots()
返回Map<String, dynamic>>
?
嗨@Zelf,我已经用演员更新了答案。这应该会删除红线。
啊,当然,那样也行。以上是关于FlutterFire Firestore 2.0.0 与流式集合的迁移问题 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
Flutterfire Firestore中的字符串匹配查询
FlutterFire Firestore 2.0.0 与流式集合的迁移问题 [重复]
FlutterFire DocumentSnapshot.data() 正在返回对象?