Obs<T> class
Obs 继承自 ValueNotifier,所以支持多种使用方式:
const count = Obs(0);
ObsBuilder(
builder: (context){
return Text('${count.value}');
},
),
ListenableBuilder(
listenable: count,
builder: (context, child){
return Text('${count.value}');
},
),
ValueListenableBuilder(
valueListenable: count,
builder: (context, value, child){
return Text('$value');
},
),
- Inheritance
-
- Object
- ChangeNotifier
- ValueNotifier<
T> - BaseObs<
T> - Obs
Constructors
-
Obs(T value, {List<
ObsNotifyMode> notifyMode = const [ObsNotifyMode.all], WatchCallback<T> ? watch, bool immediate = false}) - 创建一个响应式变量,它继承官方实现的 ValueNotifier,可以应用于 ObsBuilder、ListenableBuilder、ValueListenableBuilder 等小部件,ObsBuilder 使用最简单,它会自动收集内部所有响应式变量,当发生变更时会自动重建小部件。
Properties
-
builderFunList
→ List<
VoidCallback> -
ObsBuilder 刷新函数集合
finalinherited
- hashCode → int
-
The hash code for this object.
no setterinherited
- hasListeners → bool
-
Whether any listeners are currently registered.
no setterinherited
-
notifyMode
↔ List<
ObsNotifyMode> -
当响应式变量 setter 方法成功拦截时应用的通知模式,默认触发所有监听函数;
如果是空数组,那么修改响应式变量将不会触发任何通知,你可以调用 notify 方法手动触发监听函数。
getter/setter pair
- oldValue ↔ T
-
记录上一次
_value
值getter/setter pairinherited - runtimeType → Type
-
A representation of the runtime type of the object.
no setterinherited
- value ↔ T
-
当小部件被 ObsBuilder 包裹时,它会追踪内部的响应式变量
getter/setter pairinherited-getteroverride-setter
Methods
-
addListener(
VoidCallback listener) → void -
Register a closure to be called when the object changes.
inherited
-
addWatch(
WatchCallback< T> fun) → void - 添加监听函数,与 ChangeNotifier 不同的是,它接收 newValue、oldValue 两个参数, 同时集合被设计为 Set,不允许添加重复的监听函数。
-
bindBuilders(
) → void -
绑定刷新小部件,ObsBuilder 重写了 build 方法,在执行用户 builder 函数前,
会将刷新页面函数设置到
_tempBuilderNotifyFun
,执行 builder 函数时, 如果代码中存在 .value 的响应式变量,则会进入 getter 函数体,这就是依赖自动收集的原理。inherited -
dispose(
) → void -
释放所有监听器,一旦执行此变量将不可再次使用,不可使用的限制是来源于 ChangeNotifier。
override
-
getValue(
) → T -
提供子类直接访问
_value
方法,避免触发副作用inherited -
noSuchMethod(
Invocation invocation) → dynamic -
Invoked when a nonexistent method or property is accessed.
inherited
-
notify(
) → void -
通知所有监听函数的执行、包括页面刷新
override
-
notifyBuilders(
) → void -
通知所有 ObsBuilder 小部件刷新
inherited
-
notifyListeners(
) → void -
暴露 ChangeNotifier 中的通知方法,允许用户可以触发 ChangeNotifier 中的监听函数
override
-
notifyWatch(
) → dynamic - 执行通过构造方法添加的监听函数
-
notifyWatchList(
) → dynamic - 执行通过 addWatch 方法添加的监听函数集合
-
removeListener(
VoidCallback listener) → void -
Remove a previously registered closure from the list of closures that are
notified when the object changes.
inherited
-
removeWatch(
WatchCallback< T> fun) → void - 移除监听函数
-
reset(
) → void -
重置响应式变量到初始状态
inherited
-
setValue(
T value) → void -
提供子类直接修改
_value
方法,避免触发副作用inherited -
toString(
) → String -
如果将响应式变量当字符串使用,你可以省略.value
inherited
Operators
-
operator ==(
Object other) → bool -
The equality operator.
inherited