Flutter SliverGrid


简介

SliverGrid 将多个item以每行二个的形式, 进行排列.

基本用法

创建

在排列列表时,将基于现有的小部件, 延迟创建可见子项的元素、状态和呈现对象。 也就是只有视口中的元素, 才会被创建, 类似于我们网页中的懒加载.

销毁

当元素滚动到视图之外时,关联的元素子树、状态和渲染对象将被销毁, 进入视觉窗口的元素将以懒加载的形式进行创建。

实例演示

import 'package:flutter/material.dart';


class SliverGridDemo extends StatefulWidget {
  _Demo createState() => _Demo();
}

class _Demo extends State<SliverGridDemo> {

  Widget showCustomScrollView() {
    return  CustomScrollView(
      slivers: <Widget>[
         SliverGrid(
          gridDelegate:  SliverGridDelegateWithMaxCrossAxisExtent(
            maxCrossAxisExtent: 200.0,
            mainAxisSpacing: 10.0,
            crossAxisSpacing: 10.0,
            childAspectRatio: 4.0,
          ),
          delegate:  SliverChildBuilderDelegate(
                (BuildContext context, int index) {
              return  Container(
                alignment: Alignment.center,
                color: Colors.cyan[100 * (index % 5)],
                child:  Text('grid item $index'),
              );
            },
            childCount: 20,
          ),
        ),
//         SliverFixedExtentList(
//          itemExtent: 100.0,
//          delegate:  SliverChildBuilderDelegate(
//                (BuildContext context, int index) {
//              return  Container(
//                alignment: Alignment.center,
//                color: Colors.lightBlue[100 * (index % 9)],
//                child:  Text('list item $index'),
//              );
//            },
//          ),
//        ),
      ],
    );
  }

  Widget build(BuildContext context) {
    return Container(
      height: 400,
      color: Color(0xffc91b3a),
      child: showCustomScrollView()
    );
  }
}