Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter rxdart 0.23.1中不推荐使用Observable_Flutter_Dart_Rxdart - Fatal编程技术网

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
似乎运行良好。是否有其他类具有replace
Observable
,在文档中找不到任何相关内容。当然,我可以用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中实现。combinerelatest2

Rxdart文档更改日志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();
  }
}