首页 > 解决方案 > 我需要处理 DocumentSnapShot 单个文档

问题描述

我是新来的,正在编写一个新的应用程序。在应用程序中,我想从 firebase 文档中检索用户数据并在用户屏幕上填充 TextFields。我可以使用 DocumentSnapShot 很好地提取数据。我想使用 TextEditingController 并用数据填充它,但我做不到。我知道数据在那里,因为我可以在调试模式下看到它。以下是我的代码片段。这是我获取数据并填充 TextEditingControllers 的地方:

final agentsRef = FirebaseFirestore.instance.collection(('agents'));

getCurrentAgent() async {
  final DocumentSnapshot currentAgent =
      await agentsRef.doc(globals.currentUid).get();

 if (currentAgent == null) {
      emailController.text = "";
      new Future.delayed(Duration.zero, () {
        final agentProvider =
        Provider.of<AgentProvider>(context, listen: false);
        agentProvider.loadValues(Agents());
      });
    } else {
      // existing record
      // Updates Controllers
      **emailController.text = currentAgent.data[index].toString(); // THIS LINE IS WHERE I AM HAVING TROUBLE**
      // Updates State
      new Future.delayed(Duration.zero, () {
        final agentProvider =
        Provider.of<AgentProvider>(context, listen: false);
        agentProvider.loadValues(widget.agents);
      });
    }
 @override
  void initState() {
    getCurrentAgent();
    super.initState();
  }

如何访问 DocumentSnapShot 中的每个数据元素?

标签: firebasefluttergoogle-cloud-firestore

解决方案


您通常会通过名称而不是索引来获取字段。所以:

**emailController.text = currentAgent.data()["email"].toString();

推荐阅读