Flutter Firestore - 查找“文档快照”id

2024-03-24

我有一个带有产品列表的简单应用程序。产品存储在 Firebase Firestore 上。我想下载产品列表并让用户可以更新一些数据。

所以我准备了产品清单:

Widget _buildProductsList() {
  return new StreamBuilder(
    stream: Firestore.instance
        .collection('products')
        .snapshots,
    builder: (context, snapshot) {
      if (!snapshot.hasData) return new Text("Loading...");

      return new ListView(
        children: snapshot.data.documents.map((document) {
          Product product = new Product(document.data);
          _ProductCell cell = new _ProductCell();
          cell.product = product;
          return cell;
        }).toList(),
      );
    },
  );
}

我将文档快照序列化到我的产品对象:

class Product {

    static const NAME_KEY = 'name';
    static const DESC_KEY = 'desc';
    static const PHOTO_URL_KEY = 'photoUrl';
    static const AUTHOR_ID_KEY = 'authorId';
    static const CREATED_AT_KEY = 'createdAt';

    String name;
    String description;
    String photoUrl;
    String authorId;
    int createdAt;

    Product(Map<String, dynamic> json) {
        name = json[NAME_KEY];
        description = json[DESC_KEY];
        photoUrl = json[PHOTO_URL_KEY];
        authorId = json[AUTHOR_ID_KEY];
        createdAt = json[createdAt];
    }
}

现在,当用户与 ProductCell 进行交互时,我想更新 Firestore 中链接的产品文档,但我没有 ID,因此无法创建正确的 Firestore 引用。

如何实现这一目标?


由于问题 #12471 已解决,您可以从文档对象获取文档 ID。

print(document.documentID)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Flutter Firestore - 查找“文档快照”id 的相关文章

随机推荐

  • FPDF 中 MultiCell 的换行问题

    我正在使用 FPDF 的 Java 端口 我遇到以下错误 当我调用 multicell 两次时 每次文本都会打印在新行上 MultiCell 0 1 abcd currentBorders Alignment LEFT false prin
  • 从虚拟 PC 访问本地 Azure 应用程序以进行跨浏览器测试

    我使用的是 Windows Azure SDK 1 6 版 据我了解 模拟的负载均衡器侦听 127 0 0 1 并且 Web 应用程序的实例是在 127 255 0 0 1 创建的 我需要在开发时进行跨浏览器测试 因此我通过 Virtual
  • 如何使用 CSS 将多个内联块元素居中?

    我想在容器块元素内水平居中两个 或可能更多 内联块元素 它应该看起来像这样 foo bar 然而 根据我损坏的代码 它目前看起来像这样 foo bar
  • Babel Transpiler 无法与 Nodemon 一起运行

    Issue 无法将 Babel Transpiler 与 Nodemon 一起使用 Details 在 package json 我有 scripts start nodemon exec babel node presets es2015
  • 隐藏特定用户组的表单选项卡

    需要隐藏表单上某些用户组的某些选项卡 问题是 隐藏选项卡中的所有字段似乎不起作用 任何想法表示赞赏 使用 AX 2009 如果有人需要用视觉来回答这个问题 在 AX 中 您可以通过属性表为选项卡分配安全密钥 Then you can eit
  • 根据因子水平对 ggplot2 背景进行着色[重复]

    这个问题在这里已经有答案了 我有一个数据集 其中包含随时间 日期 变化的两个变量 Tb 和 Ta 看起来像这样 Date Tb Ta Light 1 2015 02 15 01 13 00 36 103 22 751 nightime 2
  • 如何让 Google 表单检索电子表格数据并将其显示在 Google 网站上?

    期望的结果 能够在 Google 表单 可能但不一定 可以是标准网页中的表单 中输入搜索词 并从 Google Sheet 检索相关数据并显示在 Google Site Web 应用程序中 我在这个问题中学习了如何从参数化 URL 检索数据
  • Chrome默认按钮样式

    是否可以在 CSS 中获取默认的 Chrome 按钮样式 当然很多人会说用http pastebin com zjkW2cJe http pastebin com zjkW2cJe or http pastebin com xKGBZFPg
  • 使用多重继承调用父类 __init__ ,正确的方法是什么?

    假设我有一个多重继承场景 class A object code for A here class B object code for B here class C A B def init self What s the right co
  • 如何创建一个做某事的计时器?

    我对 XNA C 很陌生 我想知道如何在 XNA C 中创建一个在几秒钟后执行某些操作的计时器 我见过Flash 教程 http www republicofcode com tutorials flash as3timer 这满足了我的需
  • 将 SQLite-NET 与 UWP 结合使用

    我从 NuGet 下载了该包 但仍然没有将 SQLite cs 和 SQLiteAsync cs 添加到项目中 如果 SQLite NET 仍然不支持 VS 2015 RTM 有任何可能的替代方案吗 请注意 我尝试了 SQLite NET
  • 如何使用内联CSS更改标签的字体大小?

    无法更改以下代码的标签字体大小 td valign top width 620 strong a href images pub pub1 pdf target self Factsheet of the OSCE Border Manag
  • Rust 中结构的生命周期界限如何工作?

    昨天IRC里对此有一些讨论 让我感到隐隐约约的不满 问题是 如何在结构上定义生命周期以将其内容限制为 只有与 自身 一样长寿的事物 i e a self那类的东西 我最初的反应是 你不能 如果你创建一个结构体Foo lt a gt 与其关联
  • Laragon 和 Laravel - sendmail 不工作

    我使用 Windows 10 Laragon 和 Laravel 框架 我通过调用设置默认身份验证php artisan make auth 问题是当我尝试使用 忘记密码 组件时 sendmail 不起作用 我点击后Send Passwor
  • 在首次反应应用程序初始化之前显示加载图标

    在浏览器下载所有 js 文件并加载 React 应用程序之前显示加载程序图标的标准方式是什么 我可以在不破坏任何东西的情况下做这样的事情吗 div class app Loading div Yes 一旦你的 JavaScript 加载完毕
  • 在 Visual Studio 中使用不同的编译器

    这可能是一个初学者问题 但在互联网上找不到正确的答案 我很好奇我可以使用吗其他Visual Studio 10 中的编译器 我喜欢 从 Visual Studio 2010 开始 概念上可以集成另一个编译器 在书里 在 Microsoft
  • 是否可以使用flyway管理oracle数据库?

    我真的很难理解如何使用 Flyway 来管理 Oracle 数据库 相关数据库有 3 个模式 如果我在我的 gradle 文件中的 Flyway 插件定义中规定了 3 个模式 我如何管理用户本身的创建以及他们使用的表空间 任何提示或建议将非
  • Jquery Mobile 面板随内容滚动

    使用 Jquery Mobile 我有一个面板 div 来创建导航系统并将其高度设置为浏览器的 100 如果内容超出面板的高度 则 css Overflow y 属性可让用户滚动查看隐藏的内容 很简单吧 现在我遇到了一些麻烦 虽然 css
  • 如何向节点的所有特定子节点添加属性

    我有以下节点 我想在其中向所有节点添加属性add nodes
  • Flutter Firestore - 查找“文档快照”id

    我有一个带有产品列表的简单应用程序 产品存储在 Firebase Firestore 上 我想下载产品列表并让用户可以更新一些数据 所以我准备了产品清单 Widget buildProductsList return new StreamB