BuilderList method

Widget BuilderList({
  1. required ValueListItemBuilder<T> itemBuilder,
  2. ValueBuilder<int>? separatorBuilder,
  3. WidgetBuilder? emptyBuilder,
  4. Key? key,
  5. bool sliver = false,
})

快速 从 ValueListenableBuilder 构建一个 ListView

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

Implementation

Widget BuilderList({
  required ValueListItemBuilder<T> itemBuilder,
  ValueBuilder<int>? separatorBuilder,
  WidgetBuilder? emptyBuilder,
  Key? key,
  bool sliver = false,
}) {
  return ValueListenableBuilder<List<T>>(
    key: key,
    valueListenable: this,
    builder: (context, value, _) {
      if (emptyBuilder != null && value.isEmpty) return emptyBuilder(context);
      if (sliver) {
        if (separatorBuilder != null) {
          return SliverList.separated(
            itemCount: value.length,
            itemBuilder: (context, index) =>
                itemBuilder(context, value[index], index),
            separatorBuilder: separatorBuilder,
          );
        }
        return SliverList(
          delegate: SliverChildBuilderDelegate(
            (context, index) => itemBuilder(context, value[index], index),
            childCount: value.length,
          ),
        );
      }
      if (separatorBuilder != null) {
        return ListView.separated(
          itemCount: value.length,
          itemBuilder: (context, index) =>
              itemBuilder(context, value[index], index),
          separatorBuilder: separatorBuilder,
        );
      } else {
        return ListView.builder(
          itemCount: value.length,
          itemBuilder: (context, index) =>
              itemBuilder(context, value[index], index),
        );
      }
    },
  );
}