将rxdart从0.18迁移到0.24

时间:2020-11-09 23:44:42

标签: redux rxdart

我已经升级到最新版本的flutter,并且现在开始学习并升级我使用的软件包。我注意到几个软件包中发生了一些重大更改,但是rxdart软件包中的重大更改使我感到困惑。

开发人员保留了他们的变更日志,并在0.23.0中提到,他们删除了here所见的可观察类,甚至制作了codemod包来尝试使迁移变得容易,{{3 }}。这仅修复了我的几个问题,并留下了另外几个问题。

Epic<AppState> getConversationPreviewsEpic(ConversationRepository repo) {
return (Stream<dynamic> actions, EpicStore<AppState> store) {
return Stream(actions)
    .whereType<SubscribeConversationPreviews>() // <-- subscribe to conversations stream
    .where((action) => action.fromUser != null)
    .switchMap((action) {
      isConversationLoading = true;
  return repo
      .getConversationPreviewStream(action.fromUser, lastSnapshotAction: (lastTimeStamp, hasMore){
        lastConversationTimeStamp = lastTimeStamp;
        hasMoreConversations = hasMore;
      })
      .map((rooms) => ConversationPreviewsSnapshot(rooms)) //<-- when new conversations come in add them to the redux store
      .takeUntil(actions.where((a) => a is UnsubscribeConversationPreviews)); //<-- unsubscribe from conversations stream
});
};
}

我遇到的所有问题都与这里的问题相似。我希望我可以像我的编辑器一样在红色下划线。因此,在代码块的第2行显示

Stream<dynamic> actions

我收到一个错误,表明Stream不是一种类型 然后在下一行

return Stream(actions)

我得到一个错误,即Stream()不接受任何参数。我删除了参数,红线消失了,但是我无法测试代码是否仍然有效,因为我不知道如何解决第一个错误。

最后一件事,fromIterable和fromFuture不再起作用,我在文档中也看不到如何调整它们以使其再次起作用

1 个答案:

答案 0 :(得分:0)

RxDart 0.24.x基于扩展方法,直接在Stream上调用方法。

import 'package:rxdart/rxdart.dart';

actions.whereType< SubscribeConversationPreviews >();