flutter3.0学习笔记

SliverPrototypeExtentList

Preview

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高度
              )
            )
        ],
      ),
    );
  }
}

Simulator Screen Shot - iPhone 14 Pro Max - 2022-11-08 at 15.04.13.png