与 SliverFixedExtentList
相同,唯一的区别是它使用原型列表项而不是像素值来定义每个项的主轴范围。
SliverPrototypeExtentList比SliverList
更有效,因为SliverPrototypeExtentList
不需要布置其子级以获取它们沿主轴的范围。它比SliverFixedExtentList
灵活一点,因为不需要以像素为单位确定适当的项目范围。构造函数:
const SliverPrototypeExtentList({
super.key,
required super.delegate,
required this.prototypeItem,
})
例子:
import 'package:flutter/material.dart';
class SliverPrototypeExtentListPage extends StatelessWidget {
const SliverPrototypeExtentListPage({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return Scaffold(
body: CustomScrollView(
slivers: [
SliverPrototypeExtentList(
delegate: SliverChildListDelegate([
Container(
color: Colors.red,
),
Container(
color: Colors.blue,
),
Container(
color: Colors.green,
),
]),
prototypeItem: const SizedBox(
height: 200,//所有容器将获得原型中定义的150px高度
)
)
],
),
);
}
}