$cond<TValue> method
Widget
$cond<TValue>(
- ValueListenable<
TValue> valueListenable, { - ValueWidgetBuilder<
TValue> ? $true, - ValueWidgetBuilder<
TValue> ? $false, - Widget? child,
- bool valueHandle(
- TValue
绑定到指定 ValueListenable, 当 valueListenable
值发生变化时,
若值判定结果为 true
则使用 $true
构建 Widget, 否则使用 $false
构建 Widget
当值类型不为 bool 时, 非 null
即被判定为 true
, 否则为 false
可通过指定 valueHandle
对值进行处理
child
用于向构建方法中传入 Widget
// example
final bp1$ = BindableProperty.$value(initial: 1);
@override
Widget build(BuildContext context) {
return $cond<int>(bp1$,
$true: (context, value, child) => Text("tom!"),
$false: (context, value, child) => Text("jerry!"),
valueHandle: (value) => value == 1);
}
Implementation
Widget $cond<TValue>(ValueListenable<TValue> valueListenable,
{ValueWidgetBuilder<TValue>? $true,
ValueWidgetBuilder<TValue>? $false,
Widget? child,
bool Function(TValue)? valueHandle}) {
assert($true != null || $false != null);
return $select<TValue>(valueListenable,
selector: (value) => (valueHandle != null
? valueHandle(value)
: (value is bool ? value : true))
? $true?.call
: $false?.call,
child: child);
}