【问题标题】:Flutter Firestore, interacting with user?Flutter Firestore,与用户交互?
【发布时间】:2019-03-14 06:19:49
【问题描述】:

Flutter:我正在使用 Streambuilder 来监听 Firestore 数据,效果很好。

但是,我想做的是在 Firestore 中的某些条件发生变化时通知用户,让他做出响应并将其写回 Firestore。

可行(在 Flutter/Dart 中)?

提前致谢。

最好, /j

StreamBuilder(
  stream: Firestore.instance.collection('users').snapshots(),
  builder: (context, snapshot) {
    if (!snapshot.hasData) return const Text('Loading...');
    List<DocumentSnapshot> documents = snapshot.data.documents;
    documents.forEach((doc) {
        if (doc['Invited']) {
            **// notify current user that he is invited, 
            // let him reply yes/no, write that value back to Firestore**
        }
    }
  },
);

【问题讨论】:

  • 是的,这是可行的,但不要指望现成的代码。有很多关于如何使用 Firestore 和 Flutter 的教程。
  • 感谢您的快速回复。愿意为我指明正确的方向吗?同样,使用 Streambuilder 并监听更改(并显示它们)不是问题。问题是通知用户并让他回复。最好的,/j
  • "问题是通知用户,让他回复。"这很不具体。例如,您可以使用 flutter.io/cookbook/design/snackbars
  • 再次感谢,非常感谢。我认为问题更具逻辑性/结构性。这是代码:StreamBuilder( stream: Firestore.instance.collection('users').snapshots(), builder: (context, snapshot) { if (!snapshot.hasData) return const Text('Loading...'); List&lt;DocumentSnapshot&gt; documents = snapshot.data.documents; documents.forEach((doc) { if (doc['Invited']) { // notify current user that he is invited, // let him reply yes/no, write that value back to Firestore } } }, );
  • 请将代码添加到问题中(格式正确)。 cmets 中较长的代码不可读。

标签: flutter google-cloud-firestore


【解决方案1】:

你有什么不想使用Firebase Messaging的原因吗?

1) Firestore 触发通知

2) 您的应用收到通知

3)您的应用处理通知,用户应该有可能在状态栏中看不到通知。

【讨论】:

  • 谢谢。好吧,不,但如果可能的话,我想在没有插件的情况下做到这一点。但是谢谢,如果没有其他工作,我会看看。
  • 不客气,将其添加到您的问题中会很有帮助,否则您可能会通过插件获得更多解决方案。
【解决方案2】:

如果我对您的理解正确,您希望在用户收到邀请后立即更新某些内容。您可以使用如下代码来做到这一点:

Future<Null> updateUser{
  @required String userId,
  bool accepted,
}) {
  assert(userId != null && userId.isNotEmpty);

  // create map that contains all fields to update
  Map<String, dynamic> dataToUpdate = {
      "accepted": accepted,
  };

  // get the reference to the user you want to update
  final userRef = references.users(userId);

  // update the user
  return userRef.updateData(dataToUpdate);
} 

您可以使用 doc.reference 从您的文档中获取参考。如果更新成功,Future 将完成;如果出现错误,Future 将终止。

【讨论】:

    猜你喜欢
    • 2019-07-21
    • 2021-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-29
    • 1970-01-01
    • 2021-02-12
    • 1970-01-01
    相关资源
    最近更新 更多