带文档字段路径和地图的Flatter Firebase Firestore查询

带文档字段路径和地图的Flatter Firebase Firestore查询,firebase,flutter,dart,google-cloud-firestore,Firebase,Flutter,Dart,Google Cloud Firestore,我正在尝试根据其他用户是否看到文档对文档列表进行排序。 我的数据库结构如下所示: following (Document Field){ Dy2k9f2m7uXnnBBPHssPxJucCrK2 : true (Map) HOIXdQkoerRBgYCGHFRylQD2VKi1 : true (Map) } 我试着运行这个命令 print( user.data()['following'].toString(), ); 并收到了输出 {HOIXdQkoerRBgYCGHFRylQD2VKi1

我正在尝试根据其他用户是否看到文档对文档列表进行排序。 我的数据库结构如下所示:

following (Document Field){
Dy2k9f2m7uXnnBBPHssPxJucCrK2 : true (Map)
HOIXdQkoerRBgYCGHFRylQD2VKi1 : true (Map)
}
我试着运行这个命令

print(
user.data()['following'].toString(),
);
并收到了输出

{HOIXdQkoerRBgYCGHFRylQD2VKi1:true,Dy2k9f2m7uXnnBBPHssPxJucCrK2: 真的}

但是我想知道指定的用户id HOIXdQkoerRBgYCGHFRylQD2VKi1的值是true还是false


我该怎么做呢?非常感谢您的帮助。

使用
user.data()['following']
访问Firestore地图类型字段,返回
地图
,这样您就可以像dart中的任何其他地图一样对待它。如果要假定它包含
bool
值:

Map<String, bool> following = user.data()['following'];
bool seen = following['the-user-id-to-check'];
Map following=user.data()['following'];
bool seen=following['the-user-id-to-check'];

正如Doug所建议的,这里的问题是该值可能是动态的。 您可以将其强制转换为布尔变量:

bool see = false;
String userKey = "Dy2k9f2m7uXnnBBPHssPxJucCrK2"; // <-- User Key

print(
  see = user.data()['following'][userKey] as bool, // <-- cast as bool
);
bool-see=false;

字符串userKey=“Dy2k9f2m7uXnnBBPHssPxJucCrK2”//输出显示类型“String”不是类型“Map”的子类型,因此,请将字符串中的S大写。我猜问题再次出现,因为数据类型是动态的