【问题标题】:how to convert rxdart Observable to Stream如何将 rxdart Observable 转换为 Stream
【发布时间】:2020-12-03 18:41:06
【问题描述】:

我在 git 上查看 firebase auth 的代码,它工作正常,但是当我升级依赖项时出现问题,特别是 rxdart 从 ^0.21.0 到当前 (^0.24.1),我明白了其他引用的question

Observable 可以被 Stream 替换 在接受的答案中。我可以改变

Observable<FirebaseUser> user; // firebase user
..
user = Observable(_auth.onAuthStateChanged);

Stream<FirebaseUser> user; // firebase user
..
user = _auth.onAuthStateChanged;

但是

Observable<Map<String, dynamic>> profile; // custom user data in Firestore
..
profile = user.switchMap((FirebaseUser u) {
      if (u != null) {
        return _db
            .collection('users')
            .document(u.uid)
            .snapshots()
            .map((snap) => snap.data);
      } else {
        return Observable.just({});
      }
    });

我试过了

Object profile;
..
user.map( (FirebaseUser u) {
      if (u != null) {
        return _db
            .collection('users')
            .document(u.uid)
            .snapshots()
            .map((snap) => snap.data);
      } else {
        return Stream.empty();
      }
    });

但它不会触发监听并且不会读取用户配置文件。

【问题讨论】:

    标签: flutter rxdart


    【解决方案1】:

    你可以这样使用它

    Stream<Map<String, dynamic>> profile = user.switchMap((u) {
          if (u != null) {
            return _db
                .collection('users')
                .document(u.uid)
                .snapshots()
                .map((snap) => snap.data);
          } else {
            return Stream.value({});
          }
        });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-10-23
      • 2023-03-31
      • 2021-11-28
      • 1970-01-01
      • 2021-10-27
      • 2010-09-07
      • 2018-01-15
      • 2013-09-23
      相关资源
      最近更新 更多