BuilderList2 method

Widget BuilderList2({
  1. Key? key,
  2. required ValueListItemBuilder<T> itemBuilder,
  3. ValueBuilder<int>? separatorBuilder,
  4. WidgetBuilder? emptyBuilder,
  5. ErrorBuilder? errorBuilder,
  6. WidgetBuilder? loadingBuilder,
  7. LoadingBuilderToSliver? loadingBuilderToSliver,
  8. ErrorBuilderToSliver? errorBuilderToSliver,
  9. bool sliver = false,
})

快速 从 ValueListenableBuilder 构建一个 ListView

  • 内部类型为 AsyncData<List<T>>
  • sliver 是否对配置信息启用sliver 转换 ignore: non_constant_identifier_names

Implementation

Widget BuilderList2({
  Key? key,
  required ValueListItemBuilder<T> itemBuilder,
  ValueBuilder<int>? separatorBuilder,
  WidgetBuilder? emptyBuilder,
  ErrorBuilder? errorBuilder,
  WidgetBuilder? loadingBuilder,
  LoadingBuilderToSliver? loadingBuilderToSliver,
  ErrorBuilderToSliver? errorBuilderToSliver,
  bool sliver = false,
}) {
  return Builder2(
    key: key,
    errorBuilder: errorBuilder,
    loadingBuilder: loadingBuilder,
    loadingBuilderToSliver: loadingBuilderToSliver,
    errorBuilderToSliver: errorBuilderToSliver,
    sliver: sliver,
    builder: (context, data, _) {
      if (emptyBuilder != null && data.isEmpty) return emptyBuilder(context);
      if (sliver) {
        if (separatorBuilder != null) {
          return SliverList.separated(
            itemCount: data.length,
            itemBuilder: (context, index) =>
                itemBuilder(context, data[index], index),
            separatorBuilder: separatorBuilder,
          );
        }
        return SliverList(
          delegate: SliverChildBuilderDelegate(
            (context, index) => itemBuilder(context, data[index], index),
            childCount: data.length,
          ),
        );
      }
      if (separatorBuilder != null) {
        return ListView.separated(
          itemCount: data.length,
          itemBuilder: (context, index) =>
              itemBuilder(context, data[index], index),
          separatorBuilder: separatorBuilder,
        );
      } else {
        return ListView.builder(
          itemCount: data.length,
          itemBuilder: (context, index) =>
              itemBuilder(context, data[index], index),
        );
      }
    },
  );
}