在我更新代码以适应颤振空安全性之后,下面的代码给了我错误
没有为“BehaviorSubject”类型定义吸气剂“值”。
final _brightness = BehaviorSubject<Brightness>();
...
if (_brightness.value == Brightness.light) { ... } // error is here
value
从那时起怎么走BehaviorSubject
?
使用 rxdart:^0.26.0
在我更新代码以适应颤振空安全性之后,下面的代码给了我错误
没有为“BehaviorSubject”类型定义吸气剂“值”。
final _brightness = BehaviorSubject<Brightness>();
...
if (_brightness.value == Brightness.light) { ... } // error is here
value
从那时起怎么走BehaviorSubject
?
使用 rxdart:^0.26.0
这是因为 value getter 不是由 BehaviorSubject 类实现的,这个函数属于 ValueStreamExtensions 文件,它本身是 ValueStream 类的一个扩展方法文件,如果你想在代码中使用任何类型的扩展函数,你应该首先在这种情况下,将扩展文件导入到您的代码文件中,只需添加
import 'package:rxdart/src/streams/value_stream.dart';
另外,请注意,对于使用 BehaviorSubject 类,您也应该导入它
import 'package:rxdart/src/subjects/behavior_subject.dart';
或直接导入主 Rx 库文件,该文件导入您可能想在代码中使用的其他依赖项,如“这是推荐的方式”
import 'package:rxdart/rxdart.dart';
此外,BehaviorSubject 本身有一个名为 valueWrapper 的 getter,它保存您的主题的最新值,您可以直接使用这个 getter
这是有关 dart 中扩展方法的更多信息 https://dart.dev/guides/language/extension-methods
您提供的代码读起来就像您想从存储在 BehaviorSubject 中的亮度实例中获取值。
https://pub.dev/documentation/rxdart/latest/rx/BehaviorSubject-class.html
一个特殊的 StreamController 捕获已添加到控制器的最新项目,并将其作为第一个项目发送给任何新的侦听器。
您的 _brightness 变量不是来自 BehaviorSubject 类型的 Brightness 类型。因此,您必须订阅一个监听器,您将获得已添加到 BehaviorSubject 的最新值。