未为 BehaviorSubject<>

问题描述

在我更新代码以适应颤振空安全后,下面的代码给了我错误

未为该类型定义 getter 'value' '行为主体'。

final _brightness = BehaviorSubject<Brightness>();
...
if (_brightness.value == Brightness.light) { ... } // error is here

那么如何从value获取BehaviorSubject

使用 rxdart:^0.26.0

解决方法

这是因为值 getter 不是由 BehaviorSubject 类实现的,这个函数属于 ValueStreamExtensions 文件,它本身是 ValueStream 类上的扩展方法文件,如果您希望在代码中使用任何类型的扩展函数,那么 BehaviorSubject 是由它实现的您应该首先将扩展文件导入到您的代码文件中,在这种情况下只需添加

import numpy as np

另外,请注意,要使用 BehaviorSubject 类,您也应该导入它

import 'package:rxdart/src/streams/value_stream.dart';

或直接导入主 Rx 库文件,该文件导入您可能想在代码中使用的其他依赖项 " 这是推荐的方式 "

import 'package:rxdart/src/subjects/behavior_subject.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 变量不是来自 Brightness 类型,而是它的 BehaviorSubject 类型。 因此,您必须使用侦听器订阅它,您将获得已添加到 BehaviorSubject 的最新值。