美文网首页
21.GridView组件

21.GridView组件

作者: 凯司机 | 来源:发表于2020-06-10 15:33 被阅读0次

    GridView用于展示多列的展示,在开发中也非常常见,比如直播App中的主播列表、电商中的商品列表等等。

    在Flutter中我们可以使用GridView来实现,使用方式和ListView也比较相似。

    GridView构造函数

    我们先学习GridView构造函数的使用方法

    一种使用GridView的方式就是使用构造函数来创建,和ListView对比有一个特殊的参数:gridDelegate

    gridDelegate用于控制交叉轴的item数量或者宽度,需要传入的类型是SliverGridDelegate,但是它是一个抽象类,所以我们需要传入它的子类:

    SliverGridDelegateWithFixedCrossAxisCount


    SliverGridDelegateWithFixedCrossAxisCount({

      @requireddouble crossAxisCount, // 交叉轴的item个数

      double mainAxisSpacing = 0.0, // 主轴的间距

      double crossAxisSpacing = 0.0, // 交叉轴的间距

      double childAspectRatio = 1.0, // 子Widget的宽高比

    })

    classMyGridCountDemoextendsStatelessWidget{

      List<Widget> getGridWidgets() {

        returnList.generate(100, (index) {

          return Container(

            color: Colors.purple,

            alignment: Alignment(0, 0),

            child: Text("item$index", style: TextStyle(fontSize: 20, color: Colors.white)),

          );

        });

      }

      @override

      Widget build(BuildContext context) {

        return GridView(

          gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(

            crossAxisCount: 3,

            mainAxisSpacing: 10,

            crossAxisSpacing: 10,

            childAspectRatio: 1.0

          ),

          children: getGridWidgets(),

        );

      }

    }

    SliverGridDelegateWithMaxCrossAxisExtent

    SliverGridDelegateWithMaxCrossAxisExtent({

      double maxCrossAxisExtent, // 交叉轴的item宽度

      double mainAxisSpacing = 0.0, // 主轴的间距

      double crossAxisSpacing = 0.0, // 交叉轴的间距

      double childAspectRatio = 1.0, // 子Widget的宽高比

    })

    classMyGridExtentDemoextendsStatelessWidget{

      List<Widget> getGridWidgets() {

        returnList.generate(100, (index) {

          return Container(

            color: Colors.purple,

            alignment: Alignment(0, 0),

            child: Text("item$index", style: TextStyle(fontSize: 20, color: Colors.white)),

          );

        });

      }

      @override

      Widget build(BuildContext context) {

        return GridView(

          gridDelegate: SliverGridDelegateWithMaxCrossAxisExtent(

            maxCrossAxisExtent: 150,

            mainAxisSpacing: 10,

            crossAxisSpacing: 10,

            childAspectRatio: 1.0

          ),

          children: getGridWidgets(),

        );

      }

    }

    相关文章

      网友评论

          本文标题:21.GridView组件

          本文链接:https://www.haomeiwen.com/subject/xilptktx.html