当前位置: 首页 > news >正文

GridView使用详情

GridView网格布局在实际项目中用的也非常多,当我们想让可以滚动的元素使用矩阵方式排列的时候.此时我们可以用网格列表组件GridView实现布局.

GridView创建网格列表主要有下面三种方式

1.可以通过GridView.count实现网格布局;

2.可以通过GridView.extent实现网格布局;

3.可以通过GridView.builder实现网格布局;

重用属性:

名称类型说明

scrollDirection

Axis滚动方法

padding

内边距

resolve

Bool组件反向排序

crossAxisSpacing

double水平子Widget之间间距

mainAxisSpacing

double垂直子Widget之间间距

crossAxisCount

int用在GridView.count一行的Widget数量

maxCrossAxisExtent

double用在GridView.extent横轴子元素的最大长度

childAspectRatio

double子Widget宽高比例

children

[]

gridDelegate

SliverChildListDelegateWithFixedCrossAxisCount

SliverChildListDelegateWithMaxCrossAxisExtent

控制布局主要用在GridView.builder里面

1.GridView.count实现网格布局

class GridViewApp extends StatelessWidget {
  const GridViewApp({super.key});

  @override
  Widget build(BuildContext context) {
    return GridView.count(
      crossAxisSpacing: 1,
      mainAxisSpacing: 2,
      crossAxisCount: 5,//每行显示的个数
      children: <Widget> [
        
        Icon(Icons.pedal_bike),
        Icon(Icons.pedal_bike),
        Icon(Icons.pedal_bike),
        Icon(Icons.pedal_bike),
        Icon(Icons.pedal_bike),
        Icon(Icons.pedal_bike),
      ],
    );
  }
}

2.GridView.extent实现网格布局

 通过它可以快速的创建横轴子元素为固定最大长度的GridView

class GridViewApp extends StatelessWidget {
  const GridViewApp({super.key});

  @override
  Widget build(BuildContext context) {
    return GridView.extent(
      maxCrossAxisExtent: 40, //一个元素的最大长度
      children: <Widget>[
        Icon(Icons.ac_unit_sharp),
        Icon(Icons.ac_unit_sharp),
        Icon(Icons.ac_unit_sharp),
        Icon(Icons.ac_unit_sharp),
        Icon(Icons.ac_unit_sharp),
      ],
    );
  }
}

3.GridView.builder实现网格布局

class GridViewApp extends StatelessWidget {
  const GridViewApp({super.key});

  Widget _initGridViewData(BuildContext context, int index) {
    return Container(
      decoration:const BoxDecoration(
        color: Colors.blue,
      ),
      child: Column(
        children: [
          Image.network(
              "https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fc-ssl.duitang.com%2Fuploads%2Fblog%2F202107%2F11%2F20210711182416_f8763.thumb.1000_0.jpg&refer=http%3A%2F%2Fc-ssl.duitang.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1668248840&t=ac563bd2a41cb84cea59c84072419158"),
          const SizedBox(
            height: 5,
          ),
          const Text("重复表示"),
        ],
      ),
    );
  }

  @override
  Widget build(BuildContext context) {
    return GridView.builder(
      gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount(
        crossAxisCount: 2, //每行显示的元素个数
        mainAxisSpacing: 10.0, //垂直item之间间距
        crossAxisSpacing: 10.0, //水平item之间间距
        childAspectRatio: 0.85, //宽高比
      ),
      itemCount: 12,
      itemBuilder: _initGridViewData,
    );
  }
}

相关文章:

  • ffmpeg重点之时间戳,PTS、DTS、time_base
  • 【LVGL-界面切换】
  • RN在android手机剪切图片的操作
  • NLP深入学习:结合源码详解 BERT 模型(三)
  • 基于单片机热电偶智能体温检测系统设计
  • 系统可靠性分析与设计相关知识总结
  • 图搜索基础-深度优先搜索
  • 【Elasticsearch索引】Rollover滚动、Shrink收缩、Split拆分索引
  • android中常见的面试题,讲的太透彻了
  • java线程池原理源码解析,程序员如何技术划水
  • docker小知识:linux环境安装docker
  • kafka平滑升级过程指导
  • springboot(四)
  • 基于腾讯云Docker部署PXC搭建MySQL集群
  • Node.js:模块化
  • java面试-GC垃圾回收机制
  • 没有谷歌翻译,我该怎么办?
  • Java Web Spring核心之AOP的解析及实战(AOP的实现、切入点、Aspect Spring的持久化 Hibernate)
  • kali中实用的小工具
  • C++ 算法竞赛中的排序算法
  • 斯坦福大学吴恩达教授最新来信:AI, GPU和芯片的未来
  • 高薪程序员面试题精讲系列155之项目介绍,说说你最熟悉的项目,遇到了哪些困难?
  • “数据中台、读写分离、表分区”解决MySQL 单表数据量、并放量双高的效率瓶颈
  • 调用百度云语音转文本
  • SDWAN的功能和场景应用
  • JS 第三课(JS的变量类型和数据类型)
  • Matlab论文插图绘制模板第56期—曲面图(Surf)
  • 全志 Tina Linux 存储介质切换:eMMC,SPI NAND,SPI NOR,SD Card,SD NAND
  • FPGA—从加法运算理解流水线的作用
  • C++从入门到精通 C++98.11.14.17
  • 基于单片机的16×16点阵的滚动显示屏设计
  • LeetCode 940. 不同的子序列 II