dart 在< Null>flutter和Firebase的类型转换中,类型“Future”不是类型“String”的子类型

jgzswidk  于 2023-01-03  发布在  Flutter
关注(0)|答案(1)|浏览(141)

我正在尝试按用户文档中提到的位置查询列表。

    1. All_Data是Firebase中的主集合。2. User_In是Firebase中主集合中文档内的子集合。3. Area是文档中以字符串形式存储用户Area的字段。*
final user_loc =  FirebaseFirestore.instance
    .collection('All_Data')
    .doc(user.uid)
    .collection('User_In')
    .doc(user.uid)
    .get()
    .then((value) async {
  print(await value.get('Area'));
}) as String;
final Stream<QuerySnapshot> datastream = FirebaseFirestore.instance
    .collection('All_Data')
    .where("private", isEqualTo: false)
    .where("Area", isEqualTo: user_loc)
    .snapshots();
    • 以下是我想要的...**每个用户都有自己的特定区域,在子集合('User_In '). doc(user. uid)中提到,我希望Streambuilder仅显示主集合中包含的区域等于子集合('User_In'). doc(user. uid)中的区域的那些文档。
    • 以下是我尝试的方法...**我已经提到了上面的代码,我正在尝试插入值,以便在最终的流数据流中查询它们
    • 以下是我得到的结果...**我得到的错误是"在类型转换中,类型" Future "不是类型" String "的子类型"。

我是新来的,请帮助我做需要做的事情,或者只是根本不可能与Firebase。

qyswt5oh

qyswt5oh1#

你可以得到它像

() async {
  final value = await FirebaseFirestore.instance
      .collection('All_Data')
      .doc(user.uid)
      .collection('User_In')
      .doc(user.uid)
      .get();

  final user_loc = value.get('Area') as String?;
}

相关问题