Builder2 method
Widget
Builder2({
- Key? key,
- required ValueAndChildBuilder<
T> builder, - Widget child = const SizedBox.shrink(),
- ErrorBuilder? errorBuilder,
- WidgetBuilder? loadingBuilder,
- LoadingBuilderToSliver? loadingBuilderToSliver,
- ErrorBuilderToSliver? errorBuilderToSliver,
- bool sliver = false,
快速构建一个ValueListenableBuilder
- 内部类型为 AsyncData<T>
sliver
是否对配置信息启用sliver 转换
ignore: non_constant_identifier_names
Implementation
Widget Builder2({
Key? key,
required ValueAndChildBuilder<T> builder,
Widget child = const SizedBox.shrink(),
ErrorBuilder? errorBuilder,
WidgetBuilder? loadingBuilder,
LoadingBuilderToSliver? loadingBuilderToSliver,
ErrorBuilderToSliver? errorBuilderToSliver,
bool sliver = false,
}) {
return ValueListenableBuilder<AsyncData<T>>(
key: key,
valueListenable: this,
builder: (context, value, _) {
return value.when(
loading: () {
loadingBuilder ??= context.config.loadingBuilder;
if (sliver) {
loadingBuilderToSliver ??= context.config.loadingBuilderToSliver;
return loadingBuilderToSliver!(
context, widgets.Builder(builder: loadingBuilder!));
} else {
return loadingBuilder!(context);
}
},
error: (error, stackTrace) {
errorBuilder ??= context.config.errorBuilder;
if (sliver) {
errorBuilderToSliver ??= context.config.errorBuilderToSliver;
return errorBuilderToSliver!(
context,
widgets.Builder(
builder: (context) =>
errorBuilder!(context, error, stackTrace)),
error,
stackTrace);
} else {
return errorBuilder!(context, error, stackTrace);
}
},
value: (data) => builder(context, data, child),
);
},
child: child,
);
}