转自连接1: pub.dev/packages/rx…
转自连接2: pub.dev/packages/rx…
1. 问题: 新工程使用 RxDart 0.23.x, 复用原来 RxDart 0.22.x 代码报错
示例代码
...
Observable.fromFuture(_request<T>(m, url, data: params, queryParameters: queryParameters, options: options, cancelToken: cancelToken))
.asBroadcastStream()
.listen((result) {
...
Observable.fromFuture 提示报错
2. 解决办法: 安装 rxdart_codemod 自动更新代码
- RxDart 0.23.x 脱离了 Observable 类, 使用 Dart 2.6 新扩展方法代替.
- 原代码报错, 安装 rxdart_codemod 自动更新代码.
rxdart_codemod 安装
> pub global activate rxdart_codemod
rxdart_codemod 使用
> cd path/to/your/code
> pub global run rxdart_codemod:22_to_23
运行示例
lib/net/dio_utils.dart:132
dynamic params, Map<String, dynamic> queryParameters,
CancelToken cancelToken, Options options, bool isList : false
}) {
String m = _getRequestMethod(method);
- Observable.fromFuture(_request<T>(m, url, data: params, queryParameters: queryParameters, options: options, cancelToken: cancelToken))
+ Stream.fromFuture(_request<T>(m, url, data: params, queryParameters: queryParameters, options: options, cancelToken: cancelToken))
.asBroadcastStream()
.listen((result) {
if (result.code == 0) {
if (isList) {
Accept change (y = yes, n = no [default], A = yes to all, q = quit)?
- 选择 "y", 自动更新代码
运行命令报错解决
pub : 无法将“pub”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次。 所在位置 行:1 字符: 1
- 如果运行以上命令报错, 以下面命令代替
> flutter pub global activate rxdart_codemod
> cd path/to/your/code
> flutter pub global run rxdart_codemod:22_to_23