Flutter rxdart 0.23.1中不推荐使用Observable
我刚刚升级到Flutter rxdart 0.23.1中不推荐使用Observable,flutter,dart,rxdart,Flutter,Dart,Rxdart,我刚刚升级到rxdart 0.23.1,突然,无论我在哪里使用observatable类,都会出现错误。我已经阅读了文档中的突破性更改,它指定使用集成在我的pubspec.yaml文件中的rxdart\u codemod包,并运行以下命令pub global activate rxdart\u codemod抛出-bash:pub:command not found错误。我已经正确安装了flatter,而且flatter-doctor似乎运行良好。是否有其他类具有replaceObservabl
rxdart 0.23.1
,突然,无论我在哪里使用observatable
类,都会出现错误。我已经阅读了文档中的突破性更改,它指定使用集成在我的pubspec.yaml
文件中的rxdart\u codemod
包,并运行以下命令pub global activate rxdart\u codemod
抛出-bash:pub:command not found
错误。我已经正确安装了flatter
,而且flatter-doctor
似乎运行良好。是否有其他类具有replaceObservable
,在文档中找不到任何相关内容。当然,我可以用Dart语言中的流
替换可观察的
,但我真的很想知道rxdart
包采用什么路径,因为它指定它是利用Dart扩展
。使用CombineRelatest2
之类的方法在Dart中是不可能的流
所以它不是替换的好选择?Rxdart不再需要自定义类来工作
它现在依赖于扩展方法,这是一种最新的Dart功能(Dart 2.6),直接在流上实现所有可观察的功能
您可以使用流
安全地替换所有可观察的
flutter pub global activate rxdart_codemod
而不是发布全局激活rxdart\u codemod
另一种选择是用流
替换可观察的
,可观察的
可以用流
替换,正如我在问题中提到的,但是如果您使用的是可观察的
中的组合相关测试2
之类的方法,然后用抽象类替换observatable
,这样您就可以使用Rx.combineLatest2使用Rx.combineLatest2
,而不是observatable.combineLatest2
可观察的不再工作 Rxdart现在在RX中实现。combinerelatest2Rxdart文档更改日志0.23.0:
ValueObservable->ValueStream
ReplayObservable->ReplayStream
ConnectableObservable->ConnectableStream
ValueConnectableObservable->ValueConnectableStream
ReplayConnectableObservable->ReplayConnectableStream
在中,我使用的是:
导入'dart:async';
导入“validators.dart”;
导入“包:rxdart/rxdart.dart”;
类组扩展了验证器{
final_email=StreamController.broadcast();
final_password=StreamController.broadcast();
Stream get email=>\u email.Stream.transform(validateEmail);
Stream get password=>\u password.Stream.transform(validatePassword);
Stream get submitValid=>CombineLatestStream.combine2(电子邮件,密码,(电子邮件,密码)=>true);
函数(字符串)get changemail=>\u email.sink.add;
函数(字符串)get changePassword=>\u password.sink.add;
处置{
_email.close();
_password.close();
}
}
那么我如何使用像CombineRelatest2和Stream这样的方法,这是不可能的
import 'dart:async';
import 'validators.dart';
import 'package:rxdart/rxdart.dart';
class Bloc extends Validators {
final _email = StreamController<String>.broadcast();
final _password = StreamController<String>.broadcast();
Stream<String> get email => _email.stream.transform(validateEmail);
Stream<String> get password => _password.stream.transform(validatePassword);
Stream<bool> get submitValid => CombineLatestStream.combine2(email, password, (email, password) => true);
Function(String) get changeEmail => _email.sink.add;
Function(String) get changePassword => _password.sink.add;
dispose() {
_email.close();
_password.close();
}
}