微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将rxdart从0.18迁移到0.24

如何解决将rxdart从0.18迁移到0.24

我已经升级到最新版本的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不再起作用,我在文档中也看不到如何调整它们以使其再次起作用

解决方法

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

import 'package:rxdart/rxdart.dart';

actions.whereType< SubscribeConversationPreviews >();

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。