zoukankan      html  css  js  c++  java
  • GridView

    网格视图在UI界面开发时也是很常用的,比如相册、视频列表中经常会遇到,Flutter中通常使用GridView.count()和GridView.builder()方法来创建网格视图。

    通过GridView.count()创建
    其主要的一些属性有部分和ListView中属性相同,不同的属性如下:

    • crossAxisCount

        表示垂直于主轴方向上的单元格Widget数量。如果scrollDirection为Axis.vertical,则表示水平单元格的数量;如果scrollDirection为Axis.horizontal,则表示垂直单元格的数量。

    • mainAxisSpacing

        表示主轴方向单元格的间距。

    • crossAxisSpacing

        表示垂直于主轴方向的单元格间距。

    • childAspectRatio

        表示单元格的宽高比。

    • children

        表示所有单元格中Widget的集合,GridView里展示的内容。

      Widget getGridView() {
        return GridView.count(
          scrollDirection: Axis.vertical,
          reverse: false,
          controller: scrollController,
          primary: false,
          physics: AlwaysScrollableScrollPhysics(),
          padding: EdgeInsets.all(15.0),
          crossAxisCount: 2,
          mainAxisSpacing: 30.0,
          crossAxisSpacing: 15.0,
          childAspectRatio: 1.5,
          children: <Widget>[
            Container(color: Colors.redAccent, alignment: Alignment.center, child: Text('Apple'),),
            Container(color: Colors.redAccent, alignment: Alignment.center, child: Text('Banana'),),
            Container(color: Colors.redAccent, alignment: Alignment.center, child: Text('Orange'),),
            Container(color: Colors.redAccent, alignment: Alignment.center, child: Text('Tomato'),),
            Container(color: Colors.redAccent, alignment: Alignment.center, child: Text('Apple'),),
            Container(color: Colors.redAccent, alignment: Alignment.center, child: Text('Banana'),),
            Container(color: Colors.redAccent, alignment: Alignment.center, child: Text('Orange'),),
            Container(color: Colors.redAccent, alignment: Alignment.center, child: Text('Tomato'),),
            Container(color: Colors.redAccent, alignment: Alignment.center, child: Text('Apple'),),
            Container(color: Colors.redAccent, alignment: Alignment.center, child: Text('Banana'),),
            Container(color: Colors.redAccent, alignment: Alignment.center, child: Text('Orange'),),
            Container(color: Colors.redAccent, alignment: Alignment.center, child: Text('Tomato'),),
            Container(color: Colors.redAccent, alignment: Alignment.center, child: Text('Apple'),),
            Container(color: Colors.redAccent, alignment: Alignment.center, child: Text('Banana'),),
            Container(color: Colors.redAccent, alignment: Alignment.center, child: Text('Orange'),),
            Container(color: Colors.redAccent, alignment: Alignment.center, child: Text('Tomato'),),
            Container(color: Colors.redAccent, alignment: Alignment.center, child: Text('Apple'),),
            Container(color: Colors.redAccent, alignment: Alignment.center, child: Text('Banana'),),
            Container(color: Colors.redAccent, alignment: Alignment.center, child: Text('Orange'),),
            Container(color: Colors.redAccent, alignment: Alignment.center, child: Text('Tomato'),),
            Container(color: Colors.redAccent, alignment: Alignment.center, child: Text('Apple'),),
          ],
        );
      }

    通过GridView.builder()创建
    该创建方式主要用于动态网格视图或大数据的网格视图。不同于GridView.count()的是其需要自己创建gridDelegate属性

    • gridDelegate

        网格代理对象,一般使用SliverGridDelegateWithFixedCrossAxisCount对象创建,可指定crossAxisCount、mainAxisSpacing、crossAxisSpacing和childAspectRatio等值。

    • itemCount

        表示网格的单元格总数。

    • itemBuilder

        其值为一个函数:Widget Function(BuildContext context, int index),实现该函数用于创建每个网格对应的Widget。

      Widget getGridViewBuilder() {
        return GridView.builder(
          padding: EdgeInsets.all(15.0),
          gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
            crossAxisCount: 3,
            mainAxisSpacing: 30.0,
            crossAxisSpacing: 15.0,
            childAspectRatio: 1.5,
          ),
          itemCount: 29,
          itemBuilder: (buildContext, index) {
            return Container(color: Colors.redAccent, alignment: Alignment.center, child: Text('第 ${index+1} 个Apple'),);
          },
        );
      }
  • 相关阅读:
    000-ESP32学习开发(SDK)-ESP32开发板使用说明
    2-STM32 替换说明-CKS32, HK32, MM32, APM32, CH32, GD32, BLM32, AT32(推荐), N32, HC华大系列
    002-CH579M学习开发-官方资料学习说明,开发板蓝牙(蓝牙定位),网口通信测试
    001-CH579M学习开发-硬件使用说明,下载和运行第一个程序
    STM32+CH395Q(以太网)基本控制篇(自建物联网平台)-硬件使用说明
    17-网络芯片CH395Q学习开发-片内EEPROM读写实验
    16-网络芯片CH395Q学习开发-低功耗实验
    15-网络芯片CH395Q学习开发-DNS 域名解析
    14-1-网络芯片CH395Q学习开发-WEB服务器-网页到底是啥, web服务器是啥, 网页如何显示的显示图片和视频
    13-网络芯片CH395Q学习开发-模块使用Socket0作为MAC RAW
  • 原文地址:https://www.cnblogs.com/timba1322/p/12487254.html
Copyright © 2011-2022 走看看