使用 Flutterfire 堆栈获取 JSON 文件

Posted

技术标签:

【中文标题】使用 Flutterfire 堆栈获取 JSON 文件【英文标题】:Getting a JSON file using flutterfire stack 【发布时间】:2021-12-02 04:29:12 【问题描述】:

我正在使用带有谷歌地图标记位置的 firebase 实时数据库存储 JSON 文件。我一直在使用google maps API。但是,我无法弄清楚如何将 json 从实时数据库获取到颤振代码,特别是在本节中:

Future<Locations> getGoogleOffices() async 
  return Locations.fromJson(
    json.decode(
      // get json file
  );

以前我在本地引用 JSON 文件来修复应用程序的错误。我非常感谢任何帮助和道歉,因为我是新来的 Flutter!

【问题讨论】:

【参考方案1】:

一旦您设置好 Fireabse 应用程序实例:

final FirebaseApp firebaseApp = await Firebase.initializeApp(); // somewhere in your `main` starter method

Firestore 数据库

您可以按如下方式查询一个Firestore集合数据:

Future<Locations> getGoogleOffices() async 
  DocumentSnapshot documentSnapshot = await FirebaseFirestore.instance.collection('locations').doc('documentId').get();
  return Locations.fromJson(
    json.decode(
      documentSnapshot.data()
  );

编辑:Firebase 实时数据库

要从 Fireabse 实时数据库 而不是 Firestore 访问数据,您可以尝试以下操作:

Future<Locations> getGoogleOffices() async 
  final DatabaseReference db = FirebaseDatabase(app: firebaseApp).reference();
  final DataSnapshot data = await db.child('locations').get();
  return Locations.fromJson(
    json.decode(
      data!.value
  );

DatabaseReference#get API 调用将提供对此查询的最新结果的引用。

【讨论】:

嗨!感谢您的帮助,我将如何对 firebase 的实时数据库进行此查询?我找不到实时数据库的等效项。 我已经通过DataSnapshot snap = await FirebaseDatabase.instance.reference().child('locations').once(); 完成了这会导致另一个错误 NoSuchMethodError (NoSuchMethodError: Class 'List' has no instance method 'call' 但我相信这是由另一个问题引起。 抱歉 @vernal123 没有指出 Firebase 实时数据库 的额外详细信息。我添加了 API 参考以获得完整的概述。

以上是关于使用 Flutterfire 堆栈获取 JSON 文件的主要内容,如果未能解决你的问题,请参考以下文章

FlutterFire DocumentSnapshot.data() 正在返回对象?

Flutterfire Firestore中的字符串匹配查询

使用 Chef 12 从 AWS OpsWorks 中的堆栈设置获取自定义 JSON

使用 FlutterFire 的 Firebase 自定义通知

在新的 FlutterFire API 中使用 setData 和 merge: true

FlutterFire 消息:您的后台消息处理程序中发生错误