首页 > 解决方案 > 如何将从 Firebase 检索到的值存储到变量 Flutter 中

问题描述

我正在尝试从 firebase 检索数据(客户名称、客户 ID)并将其存储到变量中。之后,我想将变量数据存储到另一个 firebase 路径位置。

我可以调用快照并打印它,但我无法将 firebase 中的数据保存到变量中。

CollectionReference orderInfo =
      FirebaseFirestore.instance.collection('orderInfo');
  final user = FirebaseAuth.instance.currentUser;
  String cusName;
  String add;

  void getNameAddress() async {
    final doc = await FirebaseFirestore.instance
        .collection('users')
        .doc(user.uid)
        .get();

    cusName = doc['name'];
    add = doc['address1'] + '' + doc['address2'] + '' + doc['address3'];
  }

  Future initializeOrder(BuildContext ctx) {
    getNameAddress();
    return orderInfo.doc(user.uid + 'order').set({
      'orderID': '',
      'cusID': user.uid,
      'cusName': cusName,
      'cusAdd': add,
      'clID': '',
      'clName': null,
      'price': null,
      'selectedDate': null,
      'serviceSelected': null,
      'typeOfService': 'Not selected yet',
    });
  }

intializeOrder() 是我用来将数据存储在另一个路径中的函数。

我应该如何解决?

标签: firebaseflutterdartgoogle-cloud-firestore

解决方案


由于getNameAddress()函数是异步的,async而Firestoreset()方法是异步的,所以你需要在调用的时候制作你的initializeOrder()函数async和使用,如下:awaitgetNameAddress()

  Future<void> initializeOrder(BuildContext ctx) async {
    await getNameAddress();
    return orderInfo.doc(user.uid + 'order').set({
      'orderID': '',
      'cusID': user.uid,
      'cusName': cusName,
      'cusAdd': add,
      'clID': '',
      'clName': null,
      'price': null,
      'selectedDate': null,
      'serviceSelected': null,
      'typeOfService': 'Not selected yet',
    });
  }

推荐阅读