【问题标题】:StreamProvider with Firebase RTDB带有 Firebase RTDB 的 StreamProvider
【发布时间】:2022-01-25 02:37:41
【问题描述】:

我正在尝试使用 StreamProvider 来查看用户的朋友是否有变化(即是否有人添加/删除了用户)。我当前的流代码附在下面。但是我遇到了问题无法从方法“getMyFriends”返回“Future>”类型的值,因为它的返回类型为“Stream字符串>>'

基本上对于这个流,我只想监控键(在这种情况下是其他用户的用户 ID)而不是朋友的值,所以流应该返回一个键列表。任何建议表示赞赏!

  Stream<List<String>> getMyFriends(String myUserID) {
    return rtdb
        .child('friends')
        .child(myUserID)
        .onValue
        .map((event) => event.snapshot)
        .map((data) => data.key).toList();
  }

【问题讨论】:

    标签: flutter firebase-realtime-database


    【解决方案1】:

    像这样使用async*yield*Streams:

     Stream<List<String>> getMyFriends(String myUserID) async* {
        yield* rtdb
            .child('friends')
            .child(myUserID)
            .onValue
            .map((event){
              return event.snapshot.value.map((data) => data.key).toList();
            });
      }
    

    【讨论】:

    • 感谢您的回复,我收到错误方法“地图”未定义为“事件”类型。尝试将名称更正为现有方法的名称,或定义名为“map”的方法。
    • 我已经编辑了我的答案,请检查。
    • 谢谢,现在可以正常使用了!
    猜你喜欢
    • 2021-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-23
    • 2022-01-23
    • 1970-01-01
    • 2022-10-01
    相关资源
    最近更新 更多