首页 > 解决方案 > Flutter firebase,如何检索用户数据并将其放在地图或列表中

问题描述

我在互联网上看到了很多例子,但在每种情况下,数据都在列表视图中返回。我不想在列表视图中打印。我想在应用程序中使用数据。这就是我在 firebase 上添加数据的方式。(我正在使用类信息)。

 void infouser(context) async {
      final db = FirebaseFirestore.instance;
      final info = Info(yourname, animaName, yourmail);
      final uid = await Provider.of(context).auth.getCurrentUID();
      await db.collection("userData").doc(uid).collection("info").add(info.toJson());
    }

我也试过用set,

createInfo(context) async {
      final uid = await Provider.of(context).auth.getCurrentUID();
      DocumentReference documentReference =
          await FirebaseFirestore.instance.collection('Animal').doc(uid);
      Map<String, dynamic> todos = {
        'name': yourname,
        'animalname' :animalName,
        'email' : yourmail,
      };
      documentReference.set(todos).whenComplete(() {
        print( yourname, animalName, yourmail
        );
      });
}

在这两种情况下,我只能在 Listview 上打印数据。但这不是我想要的。我希望将数据放在列表或地图上,以便能够在应用程序的其他地方使用它。拜托,如果你有一个链接(或给我一个代码示例),我可以看到示例,我将不胜感激。谢谢你。

标签: databasefirebasefluttergoogle-cloud-firestoresnapshot

解决方案


这是从 firestore 检索数据作为地图的示例:

    class GetUserName extends StatelessWidget {
      final String documentId;

      GetUserName(this.documentId);

      @override
      Widget build(BuildContext context) {
        CollectionReference users = FirebaseFirestore.instance.collection('users');

        return FutureBuilder<DocumentSnapshot>(
        future: users.doc(documentId).get(),
        builder:
          (BuildContext context, AsyncSnapshot<DocumentSnapshot> snapshot) {

        if (snapshot.hasError) {
          return Text("Something went wrong");
        }

        if (snapshot.connectionState == ConnectionState.done) {
          Map<String, dynamic> data = snapshot.data.data();
          return Text("Full Name: ${data['full_name']} ${data['last_name']}");
        }

        return Text("loading");
      },
    );
  }
}

我建议使用https://firebase.flutter.dev/docs/firestore/usage/?从 Flutter 使用 Firebase 时的文档


推荐阅读