Миграция rxdart с 0,18 на 0,24

Я обновился до самой последней версии flutter, и сейчас я начал обновлять пакеты, которые использую. Я заметил, что в нескольких пакетах произошли критические изменения, но критические изменения в пакете rxdart поставили меня в тупик.

разработчики сохранили свои журналы изменений и упомянули в 0.23.0, что они удалили наблюдаемый класс, как показано здесь и они даже сделали пакет codemod, чтобы попытаться упростить миграцию, которую можно увидеть здесь. это устранило только пару моих проблем, осталось еще несколько.

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 больше не работают, и я не вижу в документации, как их настроить, чтобы они снова работали.


person Dean Packard    schedule 09.11.2020    source источник
comment
У меня были похожие проблемы, и я не могу их исправить. BehaviorSubject<Map> _value; Stream<Map> get value => Rx.merge([ _value.stream, _onValueChangedStream, ]);   -  person Vivian Lobo    schedule 17.01.2021


Ответы (1)


RxDart 0.24.x на основе метода расширения, методы прямого вызова Stream.

import 'package:rxdart/rxdart.dart';

actions.whereType< SubscribeConversationPreviews >();
person Petrus Nguyễn Thái Học    schedule 10.11.2020