【问题标题】:Error while fetching data from firestore using flutter使用颤振从 Firestore 获取数据时出错
【发布时间】:2021-03-04 21:07:07
【问题描述】:

已经尝试了几乎所有堆栈溢出的解决方案 我可以在 firestore 中写入数据,但在实现 fetch 功能后,我无法获取我上传的数据

我期望做的是: 我已经在 firestore 中上传了一个表单用户输入数据,并想从 firestore 中获取这些数据

如果您愿意,可以找到完整代码的链接here

错误如下:

Closure call with mismatched arguments: function 'data'
Receiver: Closure: () => Map<String, dynamic> from Function 'data':.
Tried calling: data
Found: data() => Map<String, dynamic>

这是我迄今为止编写的所有方法的快速快照

String name, age, phone;
  crudMethods crudObjs = crudMethods();
  QuerySnapshot rideNow;
  List userProfilesList = [];

  @override
  void initState() {
    
    fetchDatabaseList();
    super.initState();
  }

  fetchDatabaseList() async {
    dynamic resultant = await crudMethods().getData();

    if (resultant == null) {
      print('Unable to retrieve');
    } else {
      setState(() {
        userProfilesList = resultant;
      });
    }
  }

body: Column(children[
 Expanded(
                child: ListView.builder(
                  itemCount: userProfilesList.length,
                  itemBuilder: (context, i) {
                    return ListTile(
                      title: Text(userProfilesList[i].data['name']),
                      subtitle: Text(userProfilesList[i].data['age']),
                    );
                  },
                ),
              ),
            
]);

获取数据方法如下:

Future getData() async {
    List itemsList = [];
    final CollectionReference profileList =
        FirebaseFirestore.instance.collection('Ride Now Details');
    try {
      await profileList.get().then((querySnapshot) {
        querySnapshot.docs.forEach((element) {
          itemsList.add(element.data);
        });
      });
      return itemsList;
    } catch (e) {
      print(e.toString());
      return null;
    }
  }

如果您有更好的方法来获取数据,请帮我解决这个问题并帮助我解决这个错误。

【问题讨论】:

    标签: flutter dart google-cloud-firestore widget


    【解决方案1】:

    data 是一个方法,而不是一个属性。所以你必须像方法一样调用它。

    itemsList.add(element.data());
    

    API documentation 可以看出,它返回一个Map&lt;String, dynamic&gt;,其中包含DocumentSnapshot 中的字段和值。

    【讨论】:

    • 您能否在上述代码中也突出显示相同的内容,因为我正在执行获取操作而不是添加操作,并且也是新手
    • 对不起,我不明白你在问什么。如果您有新问题,请单独发布。
    • 为了得到想要的结果,我到底应该改变什么。
    • 仔细查看我提供的代码行。我将 data() 称为带括号的方法。
    猜你喜欢
    • 2021-04-04
    • 2021-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-01
    • 2020-07-20
    • 2021-08-18
    相关资源
    最近更新 更多